update organization settings

main
alex 2024-09-04 22:57:15 +02:00
parent d35d43a494
commit 7fda97d09e
6 changed files with 111 additions and 14 deletions

17
modules/structs/app.go Normal file
View File

@ -0,0 +1,17 @@
package structs
type GetAppResponse struct {
User AppUser
Organization AppOrganization
}
type AppUser struct {
ProfilePictureUrl string
}
type AppOrganization struct {
CompanyName string
PrimaryColor string
LogoUrl string
BannerUrl string
}

View File

@ -34,3 +34,8 @@ type GetOrganizationSettingsResponse struct {
LogoUrl string LogoUrl string
BannerUrl string BannerUrl string
} }
type UpdateOrganizationSettingsRequest struct {
CompanyName string
PrimaryColor string
}

View File

@ -0,0 +1,50 @@
package app
import (
"github.com/gofiber/fiber/v2"
"lms.de/backend/modules/database"
"lms.de/backend/modules/structs"
)
func GetApp(c *fiber.Ctx) error {
// swagger:operation GET /app app getApp
// ---
// summary: Get app
// consumes:
// - application/json
// produces:
// - application/json
// responses:
// '200':
// description: App fetched successfully
// schema:
// "$ref": "#/definitions/GetAppResponse"
// '400':
// description: Invalid request body
// '500':
// description: Failed to fetch app
var user structs.User
database.DB.Model(&structs.User{
Id: c.Locals("userId").(string),
}).Select("profile_picture_url").First(&user)
var organization structs.Organization
database.DB.Model(&structs.Organization{
Id: c.Locals("organizationId").(string),
}).Select("company_name", "primary_color", "logo_url", "banner_url").First(&organization)
return c.JSON(structs.GetAppResponse{
User: structs.AppUser{
ProfilePictureUrl: user.ProfilePictureUrl,
},
Organization: structs.AppOrganization{
CompanyName: organization.CompanyName,
PrimaryColor: organization.PrimaryColor,
LogoUrl: organization.LogoUrl,
BannerUrl: organization.BannerUrl,
},
})
}

View File

@ -30,3 +30,37 @@ func GetOrganizationSettings(c *fiber.Ctx) error {
return c.JSON(organizationSettings) return c.JSON(organizationSettings)
} }
func UpdateOrganizationSettings(c *fiber.Ctx) error {
// swagger:operation PATCH /organization/settings organization updateOrganizationSettings
// ---
// summary: Update settings
// consumes:
// - application/json
// produces:
// - application/json
// parameters:
// - name: body
// in: body
// schema:
// "$ref": "#/definitions/GetOrganizationSettingsResponse"
// responses:
// '200':
// description: Settings updated successfully
// '400':
// description: Invalid request body
// '500':
// description: Failed to update settings
var organizationSettings structs.UpdateOrganizationSettingsRequest
if err := c.BodyParser(&organizationSettings); err != nil {
return c.SendStatus(fiber.StatusBadRequest)
}
database.DB.Model(&structs.Organization{
Id: c.Locals("organizationId").(string),
}).Updates(organizationSettings)
return c.SendStatus(fiber.StatusOK)
}

View File

@ -1,13 +1 @@
package user package user
import (
"github.com/gofiber/fiber/v2"
"lms.de/backend/modules/structs"
)
func GetUser(c *fiber.Ctx) error {
return c.JSON(structs.GetUserResponse{
AvatarUrl: "",
})
}

View File

@ -8,6 +8,7 @@ import (
"lms.de/backend/modules/database" "lms.de/backend/modules/database"
"lms.de/backend/modules/structs" "lms.de/backend/modules/structs"
"lms.de/backend/modules/utils" "lms.de/backend/modules/utils"
myapp "lms.de/backend/routers/router/api/v1/app"
"lms.de/backend/routers/router/api/v1/lessons" "lms.de/backend/routers/router/api/v1/lessons"
"lms.de/backend/routers/router/api/v1/organization" "lms.de/backend/routers/router/api/v1/organization"
"lms.de/backend/routers/router/api/v1/user" "lms.de/backend/routers/router/api/v1/user"
@ -16,13 +17,15 @@ import (
func SetupRoutes(app *fiber.App) { func SetupRoutes(app *fiber.App) {
v1 := app.Group("/v1") v1 := app.Group("/v1")
v1.Get("/app", handleOrganizationSubdomain, requestAccessValidation, myapp.GetApp)
o := v1.Group("/organization") o := v1.Group("/organization")
o.Post("/", organization.CreateOrganization) o.Post("/", organization.CreateOrganization)
o.Get("/team/members", handleOrganizationSubdomain, requestAccessValidation, organization.GetTeamMembers) o.Get("/team/members", handleOrganizationSubdomain, requestAccessValidation, organization.GetTeamMembers)
o.Get("/settings", handleOrganizationSubdomain, requestAccessValidation, organization.GetOrganizationSettings) o.Get("/settings", handleOrganizationSubdomain, requestAccessValidation, organization.GetOrganizationSettings)
o.Patch("/settings", handleOrganizationSubdomain, requestAccessValidation, organization.UpdateOrganizationSettings)
u := v1.Group("/user") u := v1.Group("/user")
u.Get("/", handleOrganizationSubdomain, requestAccessValidation, user.GetUser)
u.Post("/auth/login", handleOrganizationSubdomain, user.UserLogin) u.Post("/auth/login", handleOrganizationSubdomain, user.UserLogin)
l := v1.Group("/lessons") l := v1.Group("/lessons")
@ -58,7 +61,7 @@ func userSessionValidation(c *fiber.Ctx) error {
} }
c.Locals("userId", userSession.UserId) c.Locals("userId", userSession.UserId)
c.Locals("organizationId", c.Locals("organizationId")) //c.Locals("organizationId", c.Locals("organizationId"))
return c.Next() return c.Next()
} }