diff --git a/handlers/login.go b/handlers/login.go index 0d6ae45..812da06 100644 --- a/handlers/login.go +++ b/handlers/login.go @@ -122,11 +122,12 @@ func (aH *AccessHandler) Login(c *gin.Context) { aH.logger.Info("Login", "user "+user.Name+" logged in successfully") c.JSON(http.StatusOK, gin.H{ - "message": "login successful", - "id": user.Id, - "user": user.Name, - "role": user.Role.Role, - "settings": user.Settings, + "message": "login successful", + "id": user.Id, + "user": user.Name, + "role": user.Role.Role, + "settings": user.Settings, + "workspace": user.WorkspaceID, }) } @@ -223,9 +224,10 @@ func (aH *AccessHandler) Me(c *gin.Context) { } c.JSON(http.StatusOK, gin.H{ - "id": claims["id"], - "user": claims["username"], - "role": claims["role"], + "id": claims["id"], + "user": claims["username"], + "role": claims["role"], + "workspace": claims["workspace"], }) } diff --git a/handlers/workspace.go b/handlers/workspace.go index 99a1457..3f88d26 100644 --- a/handlers/workspace.go +++ b/handlers/workspace.go @@ -156,10 +156,10 @@ func (aH *AccessHandler) DeleteWorkspace(c *gin.Context) { } for _, u := range users { - if u.Settings.Workspace == nil { + if u.WorkspaceID == nil { continue - } else if u.Settings.Workspace.Uuid.String() == workspace.Uuid.String() { - u.Settings.Workspace = nil + } else if *u.WorkspaceID == workspace.Id { + u.WorkspaceID = nil } u.Workspaces = slices.DeleteFunc(u.Workspaces, func(w *models.Workspace) bool { diff --git a/models/settings.go b/models/settings.go index d1b5fa7..f9924c6 100644 --- a/models/settings.go +++ b/models/settings.go @@ -7,15 +7,14 @@ import ( ) type Settings struct { - PrimaryColor string `json:"primaryColor,omitempty"` - PrimaryColorText string `json:"primaryColorText,omitempty"` - SecondaryColor string `json:"secondaryColor,omitempty"` - SecondaryColorText string `json:"secondaryColorText,omitempty"` - Icon string `json:"icon,omitempty"` - AppName string `json:"appName,omitempty"` - DatabaseName string `json:"databaseName,omitempty"` - DatabaseToken string `json:"databaseToken,omitempty"` - Workspace *Workspace `json:"workspace,omitempty"` + PrimaryColor string `json:"primaryColor,omitempty"` + PrimaryColorText string `json:"primaryColorText,omitempty"` + SecondaryColor string `json:"secondaryColor,omitempty"` + SecondaryColorText string `json:"secondaryColorText,omitempty"` + Icon string `json:"icon,omitempty"` + AppName string `json:"appName,omitempty"` + DatabaseName string `json:"databaseName,omitempty"` + DatabaseToken string `json:"databaseToken,omitempty"` } func (s *Settings) DefaultQuasarSettings() { diff --git a/models/user.go b/models/user.go index 6e79aa9..7b4d628 100644 --- a/models/user.go +++ b/models/user.go @@ -15,6 +15,7 @@ type User struct { Expiration string `gorm:"column:expiration" json:"expiration,omitempty"` Settings Settings `gorm:"type:json" json:"settings"` Workspaces []*Workspace `gorm:"many2many:users_workspaces;" json:"workspaces"` + WorkspaceID *uint `gorm:"column:workspaceId" json:"workspaceId,omitempty"` } func (u *User) IsValid() bool {