LookupUserFromKey looks up a user object given their PublicKey.
(pk models.PublicKey, remoteUser string)
| 49 | |
| 50 | // LookupUserFromKey looks up a user object given their PublicKey. |
| 51 | func (c *Config) LookupUserFromKey(pk models.PublicKey, remoteUser string) (*User, error) { |
| 52 | username, ok := c.publicKeys[pk.RawMarshalAuthorizedKey()] |
| 53 | if !ok { |
| 54 | log.Warn().Msg("key does not exist") |
| 55 | return AnonymousUser, ErrUserNotFound |
| 56 | } |
| 57 | |
| 58 | userConfig, ok := c.Users[username] |
| 59 | if !ok { |
| 60 | log.Warn().Msg("key does not match a user") |
| 61 | return AnonymousUser, ErrUserNotFound |
| 62 | } |
| 63 | |
| 64 | if userConfig.Disabled { |
| 65 | log.Warn().Msg("user is disabled") |
| 66 | return AnonymousUser, ErrUserNotFound |
| 67 | } |
| 68 | |
| 69 | // If they weren't the git user make sure their username matches their key. |
| 70 | if remoteUser != c.Options.GitUser && remoteUser != username { |
| 71 | log.Warn().Msg("key belongs to different user") |
| 72 | return AnonymousUser, ErrUserNotFound |
| 73 | } |
| 74 | |
| 75 | return &User{ |
| 76 | Username: username, |
| 77 | IsAnonymous: false, |
| 78 | IsAdmin: userConfig.IsAdmin, |
| 79 | }, nil |
| 80 | } |
| 81 | |
| 82 | // LookupUserFromInvite looks up a user object given an invite code. |
| 83 | func (c *Config) LookupUserFromInvite(invite string) (*User, error) { |