46 lines
2.1 KiB
Go
46 lines
2.1 KiB
Go
package entities
|
|
|
|
import "github.com/google/uuid"
|
|
|
|
type M_Role struct {
|
|
ID uuid.UUID `gorm:"type:uuid;primary_key;default:uuid_generate_v4()" json:"id"`
|
|
Name string `gorm:"type:varchar(100);not null" json:"name"`
|
|
Description string `gorm:"type:text" json:"description"`
|
|
IconUrl string `gorm:"type:varchar(255)" json:"icon_url"`
|
|
Type string `gorm:"type:varchar(50);not null" json:"type"`
|
|
HomeUrl string `gorm:"type:varchar(255)" json:"home_url"`
|
|
Level int `gorm:"type:int;default:0" json:"level"`
|
|
ClientID uuid.UUID `gorm:"type:uuid;not null;index" json:"client_id"`
|
|
|
|
Client M_Client `gorm:"foreignKey:ClientID;references:ID"`
|
|
RoleMenus []M_Role_Menu `gorm:"foreignKey:RoleID;references:ID" json:"role_menus"`
|
|
Menus []M_Menu `gorm:"many2many:m_role_menus;joinForeignKey:RoleID;JoinReferences:MenuID" json:"menus"`
|
|
RolePermissions []M_Role_Permission `gorm:"foreignKey:RoleID;references:ID" json:"role_permissions"`
|
|
UserRoles []M_User_Role `gorm:"foreignKey:RoleID;references:ID" json:"user_roles"`
|
|
Users []M_User `gorm:"many2many:m_user_roles;" json:"users"`
|
|
Permissions []M_Permissions `gorm:"many2many:m_role_permissions;joinForeignKey:RoleID;JoinReferences:PermissionID" json:"permissions"`
|
|
MaintenanceGroupRoles []M_MaintenanceGroupRole `gorm:"foreignKey:RoleID;references:ID;constraint:OnDelete:CASCADE,OnUpdate:CASCADE;" json:"maintenance_group_roles"`
|
|
|
|
FullAuditTrail
|
|
}
|
|
|
|
// Assign role ke user
|
|
// userRole := M_User_Role{
|
|
// UserID: userID,
|
|
// RoleID: roleID,
|
|
// }
|
|
// db.Create(&userRole)
|
|
|
|
// // Get user dengan roles
|
|
// var user M_User
|
|
// db.Preload("Roles").First(&user, userID)
|
|
|
|
// // Get role dengan users
|
|
// var role M_Role
|
|
// db.Preload("Users").First(&role, roleID)
|
|
|
|
// // Check apakah user memiliki role tertentu
|
|
// var count int64
|
|
// db.Model(&M_User_Role{}).Where("user_id = ? AND role_id = ?", userID, roleID).Count(&count)
|
|
// hasRole := count > 0
|