package useCases import ( "RenewCMS/internal/domain/role" "RenewCMS/internal/domain/user" ) type Access struct { Role role.Role Permissions []role.Grant } type GetMyAccessUseCase struct { roles role.Repository } func NewGetMyAccessUseCase(roles role.Repository) *GetMyAccessUseCase { return &GetMyAccessUseCase{roles: roles} } func resolveRole(roles role.Repository, account user.User) (role.Role, error) { if account.RoleID == 0 { return role.Role{}, role.ErrRoleNotFound } return roles.Get(account.RoleID) } func (u *GetMyAccessUseCase) Get(account user.User) (Access, error) { resolved, err := resolveRole(u.roles, account) if err != nil { return Access{}, err } return Access{Role: resolved, Permissions: resolved.EffectiveGrants()}, nil }