forked from baron/baron-sso
feat: dynamic frontend tenant dropdown
This commit is contained in:
@@ -463,6 +463,45 @@ func (h *AuthHandler) VerifySignupCode(c *fiber.Ctx) error {
|
||||
}
|
||||
|
||||
// Signup - Finalize registration
|
||||
func (h *AuthHandler) GetActiveTenants(c *fiber.Ctx) error {
|
||||
if h.TenantService == nil {
|
||||
return errorJSON(c, fiber.StatusServiceUnavailable, "Tenant service unavailable")
|
||||
}
|
||||
|
||||
// List all tenants (we use a large limit for now to get all affiliates)
|
||||
tenants, _, err := h.TenantService.ListTenants(c.Context(), 1000, 0, "")
|
||||
if err != nil {
|
||||
return errorJSON(c, fiber.StatusInternalServerError, "Failed to fetch tenants")
|
||||
}
|
||||
|
||||
type tenantResp struct {
|
||||
ID string `json:"id"`
|
||||
Name string `json:"name"`
|
||||
Slug string `json:"slug"`
|
||||
Type string `json:"type"`
|
||||
Domains []string `json:"domains"`
|
||||
}
|
||||
|
||||
var results []tenantResp
|
||||
for _, t := range tenants {
|
||||
if t.Status == domain.TenantStatusActive && (t.Type == domain.TenantTypeCompany || t.Type == domain.TenantTypeCompanyGroup) {
|
||||
var domains []string
|
||||
for _, d := range t.Domains {
|
||||
domains = append(domains, d.Domain)
|
||||
}
|
||||
results = append(results, tenantResp{
|
||||
ID: t.ID,
|
||||
Name: t.Name,
|
||||
Slug: t.Slug,
|
||||
Type: t.Type,
|
||||
Domains: domains,
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
return c.JSON(results)
|
||||
}
|
||||
|
||||
func (h *AuthHandler) Signup(c *fiber.Ctx) error {
|
||||
var req domain.SignupRequest
|
||||
if err := c.BodyParser(&req); err != nil {
|
||||
|
||||
Reference in New Issue
Block a user