56 lines
1.6 KiB
Go
56 lines
1.6 KiB
Go
package repositories
|
|
|
|
import (
|
|
"gitea.zjmud.xyz/phyer/rbac/models"
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
func GetPermissionByID(id uint) (*models.Permission, error) {
|
|
var permission models.Permission
|
|
result := db.First(&permission, id)
|
|
return &permission, result.Error
|
|
}
|
|
|
|
func GetPermissions() ([]models.Permission, error) {
|
|
var permissions []models.Permission
|
|
result := db.Find(&permissions)
|
|
return permissions, result.Error
|
|
}
|
|
|
|
func UpdatePermission(id uint, updateData map[string]interface{}) (*models.Permission, error) {
|
|
var permission models.Permission
|
|
result := db.Model(&permission).Where("id = ?", id).Updates(updateData)
|
|
if result.Error != nil {
|
|
return nil, result.Error
|
|
}
|
|
return GetPermissionByID(id)
|
|
}
|
|
|
|
func CreatePermission(permission *models.Permission) (*models.Permission, error) {
|
|
result := db.Create(permission)
|
|
return permission, result.Error
|
|
}
|
|
|
|
func DeletePermission(id uint) error {
|
|
result := db.Delete(&models.Permission{}, id)
|
|
return result.Error
|
|
}
|
|
|
|
func CheckPermissionExists(name string) (bool, error) {
|
|
var count int64
|
|
result := db.Model(&models.Permission{}).Where("name = ?", name).Count(&count)
|
|
return count > 0, result.Error
|
|
}
|
|
|
|
func AssignRoleToUser(userID uint, roleID uint) error {
|
|
user := &models.User{Model: gorm.Model{ID: userID}}
|
|
role := &models.Role{Model: gorm.Model{ID: roleID}}
|
|
return db.Model(user).Association("Roles").Append(role)
|
|
}
|
|
|
|
func RemoveRoleFromUser(userID uint, roleID uint) error {
|
|
user := &models.User{Model: gorm.Model{ID: userID}}
|
|
role := &models.Role{Model: gorm.Model{ID: roleID}}
|
|
return db.Model(user).Association("Roles").Delete(role)
|
|
}
|