feat(role): Add many-to-many relationship for Menus in M_Role and update RoleResponse
This commit is contained in:
parent
474c3c6205
commit
e3127c075d
|
|
@ -13,6 +13,7 @@ type M_Role struct {
|
||||||
|
|
||||||
Client M_Client `gorm:"foreignKey:ClientID;references:ID"`
|
Client M_Client `gorm:"foreignKey:ClientID;references:ID"`
|
||||||
RoleMenus []M_Role_Menu `gorm:"foreignKey:RoleID;references:ID" json:"role_menus"`
|
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"`
|
RolePermissions []M_Role_Permission `gorm:"foreignKey:RoleID;references:ID" json:"role_permissions"`
|
||||||
UserRoles []M_User_Role `gorm:"foreignKey:RoleID;references:ID" json:"user_roles"`
|
UserRoles []M_User_Role `gorm:"foreignKey:RoleID;references:ID" json:"user_roles"`
|
||||||
Users []M_User `gorm:"many2many:m_user_roles;" json:"users"`
|
Users []M_User `gorm:"many2many:m_user_roles;" json:"users"`
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,4 @@ type M_Role_Menu struct {
|
||||||
|
|
||||||
Role M_Role `gorm:"foreignKey:RoleID;references:ID"`
|
Role M_Role `gorm:"foreignKey:RoleID;references:ID"`
|
||||||
Menu M_Menu `gorm:"foreignKey:MenuID;references:ID"`
|
Menu M_Menu `gorm:"foreignKey:MenuID;references:ID"`
|
||||||
|
|
||||||
FullAuditTrail
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -96,6 +96,7 @@ type RoleResponse struct {
|
||||||
// ClientID string `json:"client_id"`
|
// ClientID string `json:"client_id"`
|
||||||
Client pkgdto.IdNameResponse `json:"client"`
|
Client pkgdto.IdNameResponse `json:"client"`
|
||||||
Permissions []RolePermissionsResponse `json:"permissions,omitempty"`
|
Permissions []RolePermissionsResponse `json:"permissions,omitempty"`
|
||||||
|
Menus []pkgdto.IdNameResponse `json:"menus,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type RolePermissionsResponse struct {
|
type RolePermissionsResponse struct {
|
||||||
|
|
|
||||||
|
|
@ -190,6 +190,7 @@ func (r *roleRepository) GetRoleByID(ctx context.Context, tx *gorm.DB, id string
|
||||||
Where("id = ?", id).
|
Where("id = ?", id).
|
||||||
Preload("Client").
|
Preload("Client").
|
||||||
Preload("Permissions").
|
Preload("Permissions").
|
||||||
|
Preload("Menus").
|
||||||
First(&role).Error; err != nil {
|
First(&role).Error; err != nil {
|
||||||
return entities.M_Role{}, err
|
return entities.M_Role{}, err
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -479,6 +479,14 @@ func ToRoleResponse(role entities.M_Role) dto.RoleResponse {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var menus []pkgdto.IdNameResponse
|
||||||
|
for _, m := range role.Menus {
|
||||||
|
menus = append(menus, pkgdto.IdNameResponse{
|
||||||
|
ID: m.ID.String(),
|
||||||
|
Name: m.Name,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
return dto.RoleResponse{
|
return dto.RoleResponse{
|
||||||
ID: role.ID.String(),
|
ID: role.ID.String(),
|
||||||
Name: role.Name,
|
Name: role.Name,
|
||||||
|
|
@ -488,6 +496,7 @@ func ToRoleResponse(role entities.M_Role) dto.RoleResponse {
|
||||||
HomeUrl: role.HomeUrl,
|
HomeUrl: role.HomeUrl,
|
||||||
Client: client,
|
Client: client,
|
||||||
Permissions: permissions,
|
Permissions: permissions,
|
||||||
|
Menus: menus,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue