forked from ebhomengo/niki
38 lines
831 B
Go
38 lines
831 B
Go
package adminauthorizationservice
|
|
|
|
import (
|
|
"git.gocasts.ir/ebhomengo/niki/entity"
|
|
richerror "git.gocasts.ir/ebhomengo/niki/pkg/rich_error"
|
|
)
|
|
|
|
type Repository interface {
|
|
GetAdminPermissions(adminID uint, role entity.AdminRole) ([]entity.AdminPermission, error)
|
|
}
|
|
|
|
type Service struct {
|
|
repo Repository
|
|
}
|
|
|
|
func New(repo Repository) Service {
|
|
return Service{repo: repo}
|
|
}
|
|
|
|
func (s Service) CheckAccess(adminID uint, role entity.AdminRole, permissions ...entity.AdminPermission) (bool, error) {
|
|
const op = "adminauthorizationservice.CheckAccess"
|
|
|
|
AdminPermissions, err := s.repo.GetAdminPermissions(adminID, role)
|
|
if err != nil {
|
|
return false, richerror.New(op).WithErr(err)
|
|
}
|
|
|
|
for _, p := range permissions {
|
|
for _, ap := range AdminPermissions {
|
|
if p == ap {
|
|
return true, nil
|
|
}
|
|
}
|
|
}
|
|
|
|
return false, nil
|
|
}
|