61 lines
1.4 KiB
Go
61 lines
1.4 KiB
Go
package repositories
|
|
|
|
import (
|
|
"gitea.zjmud.xyz/phyer/rbac/models"
|
|
// "gorm.io/gorm"
|
|
)
|
|
|
|
func CheckUserPermission(userID string, permission string) (bool, error) {
|
|
var user models.User
|
|
result := db.Preload("Roles.Permissions").Where("id = ?", userID).First(&user)
|
|
if result.Error != nil {
|
|
return false, result.Error
|
|
}
|
|
|
|
for _, role := range user.Roles {
|
|
for _, perm := range role.Permissions {
|
|
if perm.Name == permission {
|
|
return true, nil
|
|
}
|
|
}
|
|
}
|
|
return false, nil
|
|
}
|
|
|
|
func GetAllUsers() ([]models.User, error) {
|
|
var users []models.User
|
|
result := db.Find(&users)
|
|
return users, result.Error
|
|
}
|
|
|
|
func GetUserByID(id string) (*models.User, error) {
|
|
var user models.User
|
|
result := db.First(&user, "id = ?", id)
|
|
return &user, result.Error
|
|
}
|
|
|
|
func GetUserByUsername(username string) (*models.User, error) {
|
|
var user models.User
|
|
result := db.First(&user, "username = ?", username)
|
|
return &user, result.Error
|
|
}
|
|
|
|
func CreateUser(user *models.User) (*models.User, error) {
|
|
result := db.Create(user)
|
|
return user, result.Error
|
|
}
|
|
|
|
func UpdateUser(id string, updateData map[string]interface{}) (*models.User, error) {
|
|
var user models.User
|
|
result := db.Model(&user).Where("id = ?", id).Updates(updateData)
|
|
if result.Error != nil {
|
|
return nil, result.Error
|
|
}
|
|
return GetUserByID(id)
|
|
}
|
|
|
|
func DeleteUser(id string) error {
|
|
result := db.Delete(&models.User{}, "id = ?", id)
|
|
return result.Error
|
|
}
|