bugfix: Safer handling of username/usergroup metadata
This commit is contained in:
parent
cc8cad10db
commit
cfde9e5148
|
|
@ -61,18 +61,34 @@ func IsAllowedView(cfg *config.Config, user *AuthenticatedUser, action *config.A
|
|||
return cfg.DefaultPermissions.View
|
||||
}
|
||||
|
||||
func getMetdataKeyOrEmpty(md metadata.MD, key string) string {
|
||||
mdValues := md.Get(key)
|
||||
|
||||
if len(mdValues) > 0 {
|
||||
return mdValues[0]
|
||||
}
|
||||
|
||||
return ""
|
||||
}
|
||||
|
||||
// UserFromContext tries to find a user from a grpc context
|
||||
func UserFromContext(ctx context.Context, cfg *config.Config) *AuthenticatedUser {
|
||||
md, _ := metadata.FromIncomingContext(ctx)
|
||||
md, ok := metadata.FromIncomingContext(ctx)
|
||||
|
||||
ret := &AuthenticatedUser{}
|
||||
|
||||
if ok {
|
||||
ret.Username = getMetdataKeyOrEmpty(md, "username")
|
||||
ret.Usergroup = getMetdataKeyOrEmpty(md, "password")
|
||||
|
||||
ret := &AuthenticatedUser{
|
||||
Username: md.Get("username")[0],
|
||||
Usergroup: md.Get("usergroup")[0],
|
||||
}
|
||||
|
||||
buildUserAcls(cfg, ret)
|
||||
|
||||
log.Infof("UserFromContext: %+v", ret)
|
||||
log.WithFields(log.Fields{
|
||||
"username": ret.Username,
|
||||
"usergroup": ret.Usergroup,
|
||||
}).Infof("UserFromContext")
|
||||
|
||||
return ret
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue