From 7a7646d950557a9ce7c181f80d92b5bfc540e296 Mon Sep 17 00:00:00 2001 From: Denis Arh Date: Mon, 23 Sep 2019 19:33:53 +0200 Subject: [PATCH] Fix MakeJWT() fn, add list of user's roles --- system/grpc/server.go | 1 + system/grpc/users_service.go | 24 +++++++++++++++--------- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/system/grpc/server.go b/system/grpc/server.go index 616371504..d30d217d0 100644 --- a/system/grpc/server.go +++ b/system/grpc/server.go @@ -22,6 +22,7 @@ func NewServer() *grpc.Server { proto.RegisterUsersServer(s, NewUserService( service.DefaultUser, + service.DefaultAuth, auth.DefaultJwtHandler, service.DefaultAccessControl, )) diff --git a/system/grpc/users_service.go b/system/grpc/users_service.go index 2d0c3ef5c..e9a9a4800 100644 --- a/system/grpc/users_service.go +++ b/system/grpc/users_service.go @@ -14,9 +14,10 @@ import ( type ( userService struct { - ac userServiceAccessControl - svc service.UserService - jwt auth.TokenEncoder + ac userServiceAccessControl + users service.UserService + auth service.AuthService + jwt auth.TokenEncoder } userServiceAccessControl interface { @@ -24,11 +25,12 @@ type ( } ) -func NewUserService(svc service.UserService, jwt auth.TokenEncoder, ac userServiceAccessControl) *userService { +func NewUserService(users service.UserService, auth service.AuthService, jwt auth.TokenEncoder, ac userServiceAccessControl) *userService { return &userService{ - ac: ac, - svc: svc, - jwt: jwt, + ac: ac, + users: users, + auth: auth, + jwt: jwt, } } @@ -41,7 +43,11 @@ func (gs userService) MakeJWT(ctx context.Context, req *proto.MakeJWTRequest) (r return nil, status.Error(codes.PermissionDenied, "no permissions to issue jwt for other users") } - if u, err = gs.svc.FindByID(req.UserID); err != nil { + if u, err = gs.users.FindByID(req.UserID); err != nil { + return + } + + if err = gs.auth.LoadRoleMemberships(u); err != nil { return } @@ -57,7 +63,7 @@ func (gs userService) FindByID(ctx context.Context, req *proto.FindByIDRequest) u *types.User ) - if u, err = gs.svc.FindByID(req.UserID); err != nil { + if u, err = gs.users.FindByID(req.UserID); err != nil { return }