69 lines
1.4 KiB
Go
69 lines
1.4 KiB
Go
package service
|
|
|
|
import (
|
|
"context"
|
|
|
|
"git.itzana.me/strafesnet/maps-service/pkg/api"
|
|
)
|
|
|
|
// SessionRoles implements getSessionRoles operation.
|
|
//
|
|
// Get bitflags of permissions the currently logged in user has.
|
|
//
|
|
// GET /session/roles
|
|
func (svc *Service) SessionRoles(ctx context.Context) (*api.Roles, error) {
|
|
userInfo, ok := ctx.Value("UserInfo").(UserInfoHandle)
|
|
if !ok {
|
|
return nil, ErrUserInfo
|
|
}
|
|
|
|
roles, err := userInfo.GetRoles();
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return &api.Roles{Roles: int32(roles)}, nil
|
|
}
|
|
|
|
// SessionUser implements sessionUser operation.
|
|
//
|
|
// Get information about the currently logged in user.
|
|
//
|
|
// GET /session/roles
|
|
func (svc *Service) SessionUser(ctx context.Context) (*api.User, error) {
|
|
userInfoHandle, ok := ctx.Value("UserInfo").(UserInfoHandle)
|
|
if !ok {
|
|
return nil, ErrUserInfo
|
|
}
|
|
|
|
userInfo, err := userInfoHandle.GetUserInfo();
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return &api.User{
|
|
UserID:int64(userInfo.UserID),
|
|
Username:userInfo.Username,
|
|
AvatarURL:userInfo.AvatarURL,
|
|
}, nil
|
|
}
|
|
|
|
// SessionUser implements sessionUser operation.
|
|
//
|
|
// Get information about the currently logged in user.
|
|
//
|
|
// GET /session/roles
|
|
func (svc *Service) SessionValidate(ctx context.Context) (bool, error) {
|
|
userInfoHandle, ok := ctx.Value("UserInfo").(UserInfoHandle)
|
|
if !ok {
|
|
return false, ErrUserInfo
|
|
}
|
|
|
|
valid, err := userInfoHandle.Validate();
|
|
if err != nil {
|
|
return false, err
|
|
}
|
|
|
|
return valid, nil
|
|
}
|