61 lines
2.2 KiB
Go
61 lines
2.2 KiB
Go
package repository
|
||
|
||
import (
|
||
"context"
|
||
|
||
"git.kirlllll.ru/volontery/backend/internal/database"
|
||
)
|
||
|
||
// RBACRepository предоставляет методы для работы с RBAC
|
||
type RBACRepository struct {
|
||
queries *database.Queries
|
||
}
|
||
|
||
// NewRBACRepository создает новый RBACRepository
|
||
func NewRBACRepository(queries *database.Queries) *RBACRepository {
|
||
return &RBACRepository{queries: queries}
|
||
}
|
||
|
||
// GetUserRoles получает роли пользователя
|
||
func (r *RBACRepository) GetUserRoles(ctx context.Context, userID int64) ([]database.Role, error) {
|
||
return r.queries.GetUserRoles(ctx, userID)
|
||
}
|
||
|
||
// AssignRoleToUser назначает роль пользователю
|
||
func (r *RBACRepository) AssignRoleToUser(ctx context.Context, params database.AssignRoleToUserParams) (*database.UserRole, error) {
|
||
result, err := r.queries.AssignRoleToUser(ctx, params)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
return &result, nil
|
||
}
|
||
|
||
// GetRoleByName получает роль по имени
|
||
func (r *RBACRepository) GetRoleByName(ctx context.Context, name string) (*database.Role, error) {
|
||
result, err := r.queries.GetRoleByName(ctx, name)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
return &result, nil
|
||
}
|
||
|
||
// UserHasRole проверяет наличие роли у пользователя
|
||
func (r *RBACRepository) UserHasRole(ctx context.Context, params database.UserHasRoleParams) (bool, error) {
|
||
return r.queries.UserHasRole(ctx, params)
|
||
}
|
||
|
||
// UserHasRoleByName проверяет наличие роли по имени
|
||
func (r *RBACRepository) UserHasRoleByName(ctx context.Context, params database.UserHasRoleByNameParams) (bool, error) {
|
||
return r.queries.UserHasRoleByName(ctx, params)
|
||
}
|
||
|
||
// GetUserPermissions получает все разрешения пользователя
|
||
func (r *RBACRepository) GetUserPermissions(ctx context.Context, userID int64) ([]database.GetUserPermissionsRow, error) {
|
||
return r.queries.GetUserPermissions(ctx, userID)
|
||
}
|
||
|
||
// UserHasPermission проверяет наличие разрешения у пользователя
|
||
func (r *RBACRepository) UserHasPermission(ctx context.Context, params database.UserHasPermissionParams) (bool, error) {
|
||
return r.queries.UserHasPermission(ctx, params)
|
||
}
|