some changes

This commit is contained in:
2025-12-21 00:00:03 +02:00
parent 904f446447
commit 85f8ac60e7
14 changed files with 678 additions and 1475 deletions

View File

@@ -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 {

View File

@@ -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

View File

@@ -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"`
}