wms-be/database/entities/m_role_entity.go

44 lines
1.9 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"`
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"`
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