add permissions route

This commit is contained in:
2026-07-07 00:46:55 +07:00
parent 612c3a6f86
commit 377dd26e3e
8 changed files with 342 additions and 19 deletions
+61
View File
@@ -0,0 +1,61 @@
package ui_service
import (
rolesModule "evening_detective_server/internal/modules/roles"
"slices"
)
var (
permissions = map[string][]string{
rolesModule.Admin: {
"users_page",
},
rolesModule.Author: {
"scenarios_page",
"scenario_editor_page",
},
rolesModule.Organizer: {
"scenarios_page",
"games_page",
"game_panel_page",
},
rolesModule.User: {
"games_page",
},
}
)
type UiService struct{}
func NewUiService() *UiService {
return &UiService{}
}
func (s *UiService) GetPermissions(roles []string) []string {
resMap := s.getPermissionsMap(roles)
res := make([]string, 0, len(resMap))
for permission := range resMap {
res = append(res, permission)
}
return res
}
func (s *UiService) getPermissionsMap(roles []string) map[string]any {
resMap := make(map[string]any, 100)
if slices.Contains(roles, rolesModule.Admin) {
for _, permissionsList := range permissions {
for _, permission := range permissionsList {
resMap[permission] = struct{}{}
}
}
return resMap
}
for _, role := range roles {
for _, permission := range permissions[role] {
resMap[permission] = struct{}{}
}
}
return resMap
}