63 lines
1.0 KiB
Cheetah
63 lines
1.0 KiB
Cheetah
package middleware
|
|
|
|
import (
|
|
"{{ .Name }}/db"
|
|
"{{ .Name }}/db/model"
|
|
|
|
uuid "github.com/satori/go.uuid"
|
|
)
|
|
|
|
func InRole(idUser uuid.UUID, roleName string) bool {
|
|
var err error
|
|
tx := db.BeginTransation()
|
|
|
|
defer func() {
|
|
db.EndTransaction(tx, err)
|
|
}()
|
|
|
|
var userRoles []model.UserRole
|
|
if res := tx.Joins("Role").Find(&userRoles, "id_user = ?", idUser); res.RowsAffected == 0 {
|
|
return false
|
|
}
|
|
|
|
if len(userRoles) > 0 {
|
|
for _, item := range userRoles {
|
|
if item.Role.Name == roleName {
|
|
return true
|
|
}
|
|
}
|
|
}
|
|
|
|
return false
|
|
}
|
|
|
|
func InsRole(idUser uuid.UUID, roleNames []string) bool {
|
|
|
|
if len(roleNames) == 0{
|
|
return true
|
|
}
|
|
|
|
var err error
|
|
tx := db.BeginTransation()
|
|
|
|
defer func() {
|
|
db.EndTransaction(tx, err)
|
|
}()
|
|
|
|
var userRoles []model.UserRole
|
|
if res := tx.Joins("Role").Find(&userRoles, "id_user = ?", idUser); res.RowsAffected == 0 {
|
|
return false
|
|
}
|
|
|
|
if len(userRoles) > 0 {
|
|
for _, item := range userRoles {
|
|
for _,item2:=range roleNames{
|
|
if item.Role.Name == item2 {
|
|
return true
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
return false
|
|
} |