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