@@ -10,9 +10,8 @@ import (
1010 "strings"
1111)
1212
13- func validateUser (user * database.DBUser , response * models.FormResponse ) {
14- // Title is required
15- if strings .Trim (user .DisplayName , " " ) == "" {
13+ func validateDisplayName (displayName string , response * models.FormResponse ) {
14+ if displayName == "" {
1615 response .AddError ("DisplayName" , "required" )
1716 }
1817}
@@ -33,28 +32,47 @@ func (server *Server) GetUser(ctx *gin.Context) {
3332 ctx .Status (http .StatusUnauthorized )
3433}
3534
36- func (server * Server ) PutUser (ctx * gin.Context ) {
35+ type PutProfileRequest struct {
36+ DisplayName string
37+ }
38+
39+ func (server * Server ) PutProfile (ctx * gin.Context ) {
3740 session := sessions .Default (ctx )
3841 userId := session .Get ("userId" )
3942 if userId != nil {
40- var user database.DBUser
41- err := ctx .ShouldBindJSON (& user )
43+ user , err := database .GetUser (convert .StringToUUID (userId .(string )))
44+ if err != nil {
45+ logger .Error ("PutProfile: GetUser error: %v" , err )
46+ ctx .Status (http .StatusInternalServerError )
47+ return
48+ }
49+
50+ // admin display name lock prevents a user from changing it
51+ if user .LockDisplayName {
52+ logger .Info ("DisplayName Locked" )
53+ ctx .Status (http .StatusForbidden )
54+ return
55+ }
56+
57+ var request PutProfileRequest
58+ err = ctx .ShouldBindJSON (& request )
4259 if err != nil {
4360 ctx .Status (http .StatusBadRequest )
4461 return
4562 }
4663
4764 response := models .NewFormResponse ()
65+ request .DisplayName = strings .Trim (request .DisplayName , " " )
4866
4967 // Perform validation
50- validateUser ( & user , & response )
68+ validateDisplayName ( request . DisplayName , & response )
5169 if len (response .Errors ) > 0 {
5270 logger .Error ("Validation Error: %v+" , user )
5371 ctx .JSON (http .StatusBadRequest , response )
5472 return
5573 }
5674
57- user .Id = convert . StringToUUID ( userId .( string ))
75+ user .DisplayName = request . DisplayName
5876 _ , err = database .UpdateUser (user )
5977 if err != nil {
6078 logger .Error ("Error calling database.UpdateEvent: %v" , err )
@@ -92,7 +110,7 @@ func (server *Server) SetupUserRoutes() {
92110 group := server .Gin .Group ("/user" )
93111 {
94112 group .GET ("/" , server .GetUser )
95- group .PUT ("/" , server .PutUser )
113+ group .PUT ("/profile " , server .PutProfile )
96114 group .GET ("/logout" , server .Logout )
97115 }
98116
0 commit comments