Better handling of permissions
This commit is contained in:
@@ -8,8 +8,7 @@ type PermissionConditions struct {
|
||||
|
||||
type Permission struct {
|
||||
bun.BaseModel `bun:"table:permissions"`
|
||||
ID int `bun:"id,pk,autoincrement" json:"id"`
|
||||
Resource string `bun:"resource,notnull,unique:permission" json:"resource"`
|
||||
Action string `bun:"action,notnull,unique:permission" json:"action"`
|
||||
Resource string `bun:"resource,pk" json:"resource"`
|
||||
Action string `bun:"action,pk" json:"action"`
|
||||
Conditions PermissionConditions `bun:"conditions,type:jsonb" json:"conditions"`
|
||||
}
|
||||
|
||||
@@ -6,11 +6,12 @@ import (
|
||||
)
|
||||
|
||||
type PermissionToRole struct {
|
||||
bun.BaseModel `bun:"table:permissions_to_users"`
|
||||
bun.BaseModel `bun:"table:permissions_to_roles"`
|
||||
|
||||
PermissionID int `bun:"permission_id,pk"`
|
||||
RoleID uuid.UUID `bun:"type:uuid,pk"`
|
||||
PermissionAction string `bun:"action,pk"`
|
||||
PermissionResource string `bun:"resource,pk"`
|
||||
RoleID uuid.UUID `bun:"type:uuid,pk"`
|
||||
|
||||
Permission *Permission `bun:"rel:belongs-to,join:permission_id=id"`
|
||||
Permission *Permission `bun:"rel:belongs-to,join:resource=resource,action=action"`
|
||||
Role *Role `bun:"rel:belongs-to,join:role_id=id"`
|
||||
}
|
||||
|
||||
@@ -10,5 +10,5 @@ type Role struct {
|
||||
ID uuid.UUID `bun:"id,pk,type:uuid,default:gen_random_uuid()" json:"id"`
|
||||
Name string `bun:"name,unique,notnull" json:"name"`
|
||||
|
||||
Permissions []Permission `bun:"m2m:permissions_to_users,join:Role=Permission" json:"permissions,omitempty"`
|
||||
Permissions []Permission `bun:"m2m:permissions_to_roles,join:Role=Permission" json:"permissions,omitempty"`
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user