From c25c5f3ee218fcac404376617ba772ba58a0d8a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?MELF=E6=99=93=E5=AE=87?= Date: Fri, 25 Feb 2022 18:26:51 +0800 Subject: [PATCH] =?UTF-8?q?-=20=E5=B0=81=E8=A3=85casbin=E6=96=B9=E6=B3=95?= =?UTF-8?q?=20-=20=E6=9B=B4=E6=96=B0=E5=88=86=E5=B8=83=E5=BC=8FID=E7=B1=BB?= =?UTF-8?q?=E5=9E=8B=20-=20=E5=A2=9E=E5=8A=A0=E5=88=86=E5=B8=83=E5=BC=8FID?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B=E5=81=A5=E5=A3=AE=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- utils/casbin/roleautjorities.go | 6 ++ utils/casbin/userrole.go | 139 ++++++++++++++++++++++++++++++++ 2 files changed, 145 insertions(+) create mode 100644 utils/casbin/roleautjorities.go create mode 100644 utils/casbin/userrole.go diff --git a/utils/casbin/roleautjorities.go b/utils/casbin/roleautjorities.go new file mode 100644 index 0000000..ce5be63 --- /dev/null +++ b/utils/casbin/roleautjorities.go @@ -0,0 +1,6 @@ +/** + * @Time :2022/2/25 9:29 + * @Author :ZhangXiaoyu + */ + +package casbin diff --git a/utils/casbin/userrole.go b/utils/casbin/userrole.go new file mode 100644 index 0000000..b1c634c --- /dev/null +++ b/utils/casbin/userrole.go @@ -0,0 +1,139 @@ +/** + * @Time :2022/2/25 9:02 + * @Author :ZhangXiaoyu + */ + +package casbin + +import ( + "errors" + "github.com/casbin/casbin/v2" +) + +// AddRoleForUser +/** + * @Description: 为用户添加角色 + * @param e + * @param user + * @param role + * @return err + */ +func AddRoleForUser(e *casbin.Enforcer, user, role string) (err error) { + _, err = e.AddRoleForUser(user, role) + if err != nil { + return errors.New("为用户添加角色失败:" + err.Error()) + } + return +} + +// AddRolesForUser +/** + * @Description: 为用户添加多个角色 + * @param e + * @param user + * @param roles + * @return err + */ +func AddRolesForUser(e *casbin.Enforcer, user string, roles []string) (err error) { + _, err = e.AddRolesForUser(user, roles) + if err != nil { + return errors.New("为用户批量添加角色失败:" + err.Error()) + } + return +} + +// DeleteRoleForUser +/** + * @Description: 删除用户的一个角色 + * @param e + * @param user + * @param role + * @return err + */ +func DeleteRoleForUser(e *casbin.Enforcer, user, role string) (err error) { + _, err = e.DeleteRoleForUser(user, role) + if err != nil { + return errors.New("删除用户角色失败:" + err.Error()) + } + return +} + +// DeleteAllRolesForUser +/** + * @Description: 删除用户的所有角色 + * @param e + * @param user + * @return err + */ +func DeleteAllRolesForUser(e *casbin.Enforcer, user string) (err error) { + _, err = e.DeleteRolesForUser(user) + if err != nil { + return errors.New("删除用户所有角色失败:" + err.Error()) + } + return +} + +// GetRolesForUser +/** + * @Description: 查询用户所有角色 + * @param e + * @param user + * @return roles + * @return err + */ +func GetRolesForUser(e *casbin.Enforcer, user string) (roles []string, err error) { + roles, err = e.GetRolesForUser(user) + if err != nil { + return nil, errors.New("查询用户角色失败:" + err.Error()) + } + return +} + +// GetUsersForRole +/** + * @Description: 查询该角色下的用户 + * @param e + * @param role + * @return users + * @return err + */ +func GetUsersForRole(e *casbin.Enforcer, role string) (users []string, err error) { + users, err = e.GetUsersForRole(role) + if err != nil { + return nil, errors.New("查询角色的用户失败:" + err.Error()) + } + return +} + +// HasRoleForUser +/** + * @Description: 查询用户是否具有角色 + * @param e + * @param user + * @param role + * @return has + * @return err + */ +func HasRoleForUser(e *casbin.Enforcer, user, role string) (has bool, err error) { + has, err = e.HasRoleForUser(user, role) + if err != nil { + return false, errors.New("查询用户是否具有角色失败:" + err.Error()) + } + return +} + +func UpdateRolesForUser(e *casbin.Enforcer, user string, roles []string) (err error) { + // 删除用户角色 + err = DeleteAllRolesForUser(e, user) + if err != nil { + return err + } + // 如果用户角色不为空,则为用户添加角色 + if roles != nil { + err = AddRolesForUser(e, user, roles) + if err != nil { + return err + } + } + return +} -- GitLab