forked from baron/baron-sso
fix(backend): allow role mocking via query parameter for CSV export downloads
This commit is contained in:
@@ -548,7 +548,22 @@ func (h *UserHandler) ExportUsersCSV(c *fiber.Ctx) error {
|
|||||||
|
|
||||||
var requesterRole string
|
var requesterRole string
|
||||||
var manageableSlugs []string
|
var manageableSlugs []string
|
||||||
if profile, ok := c.Locals("user_profile").(*domain.UserProfileResponse); ok {
|
|
||||||
|
profile, _ := c.Locals("user_profile").(*domain.UserProfileResponse)
|
||||||
|
|
||||||
|
// [New] Support Role Mocking for Download (which doesn't have custom headers)
|
||||||
|
if profile == nil {
|
||||||
|
appEnv := strings.ToLower(os.Getenv("APP_ENV"))
|
||||||
|
isDev := appEnv == "dev" || appEnv == "development" || appEnv == ""
|
||||||
|
mockRole := c.Query("x-test-role")
|
||||||
|
if isDev && mockRole != "" {
|
||||||
|
slog.Info("🔑 [AUTH] Using mock role from query for export", "role", mockRole)
|
||||||
|
requesterRole = mockRole
|
||||||
|
// For tenant_admin, we might need more data, but let's assume super_admin for full export in dev
|
||||||
|
} else {
|
||||||
|
return errorJSON(c, fiber.StatusUnauthorized, "invalid session (trace:export_profile)")
|
||||||
|
}
|
||||||
|
} else {
|
||||||
requesterRole = profile.Role
|
requesterRole = profile.Role
|
||||||
if requesterRole == domain.RoleTenantAdmin {
|
if requesterRole == domain.RoleTenantAdmin {
|
||||||
for _, t := range profile.ManageableTenants {
|
for _, t := range profile.ManageableTenants {
|
||||||
|
|||||||
Reference in New Issue
Block a user