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
|
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
|
// UserFromContext tries to find a user from a grpc context
|
||||||
func UserFromContext(ctx context.Context, cfg *config.Config) *AuthenticatedUser {
|
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)
|
buildUserAcls(cfg, ret)
|
||||||
|
|
||||||
log.Infof("UserFromContext: %+v", ret)
|
log.WithFields(log.Fields{
|
||||||
|
"username": ret.Username,
|
||||||
|
"usergroup": ret.Usergroup,
|
||||||
|
}).Infof("UserFromContext")
|
||||||
|
|
||||||
return ret
|
return ret
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue