mirror of
https://github.com/cuigh/swirl
synced 2025-06-26 18:16:50 +00:00
Add permission control for service resource
This commit is contained in:
@@ -65,6 +65,7 @@ type Session struct {
|
||||
|
||||
type AuthUser struct {
|
||||
user *User
|
||||
roles []*Role
|
||||
perms map[string]struct{}
|
||||
}
|
||||
|
||||
@@ -74,6 +75,7 @@ func NewAuthUser(user *User, roles []*Role) *AuthUser {
|
||||
}
|
||||
u := &AuthUser{
|
||||
user: user,
|
||||
roles: roles,
|
||||
perms: make(map[string]struct{}),
|
||||
}
|
||||
for _, role := range roles {
|
||||
@@ -100,6 +102,15 @@ func (u *AuthUser) Admin() bool {
|
||||
return u.user.Admin
|
||||
}
|
||||
|
||||
func (u *AuthUser) IsInRole(roleID string) bool {
|
||||
for _, role := range u.roles {
|
||||
if role.ID == roleID {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func (u *AuthUser) IsAllowed(perm string) bool {
|
||||
if u.user.Admin {
|
||||
return true
|
||||
|
||||
Reference in New Issue
Block a user