127 lines
3.3 KiB
Go
127 lines
3.3 KiB
Go
package organization
|
|
|
|
import (
|
|
"git.ex.umbach.dev/LMS/libcore/models"
|
|
"github.com/gofiber/fiber/v2"
|
|
"lms.de/backend/modules/database"
|
|
"lms.de/backend/modules/structs"
|
|
"lms.de/backend/modules/utils"
|
|
)
|
|
|
|
func GetRoles(c *fiber.Ctx) error {
|
|
// swagger:operation GET /organization/roles organization getRoles
|
|
// ---
|
|
// summary: Get roles
|
|
// produces:
|
|
// - application/json
|
|
// responses:
|
|
// '200':
|
|
// description: Roles
|
|
// schema:
|
|
// "$ref": "#/definitions/RolesResponse"
|
|
// '500':
|
|
// description: Failed to get roles
|
|
|
|
/*
|
|
var roles []models.Role
|
|
|
|
if err := database.DB.Model(&models.Role{}).Where("organization_id = ?", c.Locals("organizationId").(string)).Find(&roles).Error; err != nil {
|
|
return c.SendStatus(fiber.StatusInternalServerError)
|
|
}
|
|
|
|
if len(roles) == 0 {
|
|
return c.SendStatus(fiber.StatusInternalServerError)
|
|
}
|
|
|
|
for _, role := range roles {
|
|
var rolePermissions []uint16
|
|
|
|
if err := database.DB.Model(&models.RolePermission{}).Where("role_id = ?", role.Id).Pluck("permission", &rolePermissions).Error; err != nil {
|
|
return c.SendStatus(fiber.StatusInternalServerError)
|
|
}
|
|
|
|
var users []structs.HelperRoleUser
|
|
|
|
if err := database.DB.Model(&models.User{}).Where("role_id = ?", role.Id).Where("organization_id = ?", c.Locals("organizationId").(string)).Find(&users).Error; err != nil {
|
|
return c.SendStatus(fiber.StatusInternalServerError)
|
|
}
|
|
|
|
rolesResponse.Roles = append(rolesResponse.Roles, structs.HelperRole{
|
|
Id: role.Id,
|
|
Name: role.Name,
|
|
Master: role.Master,
|
|
Permissions: rolePermissions,
|
|
Users: users,
|
|
})
|
|
} */
|
|
|
|
var rolesResponse structs.RolesResponse
|
|
|
|
// order is random so we need to define the order
|
|
keys := []string{utils.RoleAdminId, utils.RoleModeratorId, utils.RoleUserId}
|
|
|
|
for _, key := range keys {
|
|
role := utils.Roles[key]
|
|
|
|
var users []structs.HelperRoleUser
|
|
|
|
if err := database.DB.Model(&models.User{}).
|
|
Select("first_name", "last_name", "profile_picture_url").
|
|
Where("role_id = ? AND organization_id = ?", key, c.Locals("organizationId").(string)).
|
|
Find(&users).Error; err != nil {
|
|
return c.SendStatus(fiber.StatusInternalServerError)
|
|
}
|
|
|
|
rolesResponse.Roles = append(rolesResponse.Roles, structs.HelperRole{
|
|
Id: key,
|
|
Permissions: role,
|
|
Users: users,
|
|
})
|
|
}
|
|
|
|
return c.JSON(rolesResponse)
|
|
}
|
|
|
|
/*
|
|
func CreateRole(c *fiber.Ctx) error {
|
|
// swagger:operation POST /organization/roles organization createRole
|
|
// ---
|
|
// summary: Create role
|
|
// produces:
|
|
// - application/json
|
|
// parameters:
|
|
// - name: name
|
|
// in: body
|
|
// description: Role name
|
|
// required: true
|
|
// schema:
|
|
// "$ref": "#/definitions/CreateRoleRequest"
|
|
// responses:
|
|
// '200':
|
|
// description: Role created
|
|
// '400':
|
|
// description: Invalid input
|
|
// '500':
|
|
// description: Failed to create role
|
|
|
|
var body structs.CreateRoleRequest
|
|
|
|
if err := c.BodyParser(&body); err != nil {
|
|
fmt.Print(err)
|
|
return c.SendStatus(fiber.StatusBadRequest)
|
|
}
|
|
|
|
role := models.Role{
|
|
Id: uuid.New().String(),
|
|
OrganizationId: c.Locals("organizationId").(string),
|
|
Name: body.Name,
|
|
}
|
|
|
|
if err := database.DB.Create(&role).Error; err != nil {
|
|
return c.SendStatus(fiber.StatusInternalServerError)
|
|
}
|
|
|
|
return c.SendStatus(fiber.StatusOK)
|
|
}
|
|
*/
|