some changes
This commit is contained in:
@@ -1,11 +1,13 @@
|
||||
package acl
|
||||
|
||||
import "git.oblat.lv/alex/triggerssmith/internal/user"
|
||||
|
||||
type UserRole struct {
|
||||
UserID uint `gorm:"index;not null;uniqueIndex:ux_user_role"`
|
||||
RoleID uint `gorm:"index;not null;uniqueIndex:ux_user_role"`
|
||||
|
||||
Role Role `gorm:"constraint:OnDelete:CASCADE;foreignKey:RoleID;references:ID" json:"role"`
|
||||
//User user.User `gorm:"constraint:OnDelete:CASCADE;foreignKey:UserID;references:ID"`
|
||||
Role Role `gorm:"constraint:OnDelete:CASCADE;foreignKey:RoleID;references:ID" json:"role"`
|
||||
User user.User `gorm:"constraint:OnDelete:CASCADE;foreignKey:UserID;references:ID"`
|
||||
}
|
||||
|
||||
type Resource struct {
|
||||
@@ -17,8 +19,8 @@ type Role struct {
|
||||
ID uint `gorm:"primaryKey;autoIncrement" json:"id"`
|
||||
Name string `gorm:"unique;not null" json:"name"`
|
||||
|
||||
Resources []Resource `gorm:"many2many:role_resources" json:"resources"`
|
||||
//Users []user.User `gorm:"many2many:user_roles"`
|
||||
Resources []Resource `gorm:"many2many:role_resources" json:"resources"`
|
||||
Users []user.User `gorm:"many2many:user_roles"`
|
||||
}
|
||||
|
||||
type RoleResource struct {
|
||||
|
||||
@@ -16,7 +16,7 @@ func (s *Service) GetRoles() ([]Role, error) {
|
||||
}
|
||||
|
||||
var roles []Role
|
||||
if err := s.db.Preload("Resources").Order("id").Find(&roles).Error; err != nil {
|
||||
if err := s.db.Preload("Resources").Preload("Users").Order("id").Find(&roles).Error; err != nil {
|
||||
return nil, fmt.Errorf("db error: %w", err)
|
||||
}
|
||||
|
||||
@@ -60,7 +60,7 @@ func (s *Service) GetRoleByID(roleID uint) (*Role, error) {
|
||||
return nil, ErrNotInitialized
|
||||
}
|
||||
var role Role
|
||||
err := s.db.Preload("Resources").First(&role, roleID).Error
|
||||
err := s.db.Preload("Resources").Preload("Users").First(&role, roleID).Error
|
||||
if err != nil {
|
||||
if errors.Is(err, gorm.ErrRecordNotFound) {
|
||||
return nil, ErrRoleNotFound
|
||||
|
||||
@@ -1,15 +1,14 @@
|
||||
package user
|
||||
|
||||
import (
|
||||
"git.oblat.lv/alex/triggerssmith/internal/acl"
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
type User struct {
|
||||
ID uint `gorm:"primaryKey"`
|
||||
Username string `gorm:"uniqueIndex;not null"`
|
||||
Email string `gorm:"uniqueIndex;not null"`
|
||||
Password string `gorm:"not null"`
|
||||
Roles []acl.Role `gorm:"many2many:user_roles"`
|
||||
ID uint `gorm:"primaryKey"`
|
||||
Username string `gorm:"uniqueIndex;not null"`
|
||||
Email string `gorm:"uniqueIndex;not null"`
|
||||
Password string `gorm:"not null"`
|
||||
//Roles []acl.Role `gorm:"many2many:user_roles"`
|
||||
DeletedAt gorm.DeletedAt `gorm:"index"`
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user