diff --git a/controllers/user.go b/controllers/user.go index 3a5a6bbf..7dbae07e 100644 --- a/controllers/user.go +++ b/controllers/user.go @@ -138,10 +138,6 @@ func (c *ApiController) UpdateUser() { id := c.Input().Get("id") columnsStr := c.Input().Get("columns") - if id == "" { - id = c.GetSessionUsername() - } - var user object.User err := json.Unmarshal(c.Ctx.Input.RequestBody, &user) if err != nil { @@ -149,10 +145,27 @@ func (c *ApiController) UpdateUser() { return } - if msg := object.CheckUpdateUser(object.GetUser(id), &user, c.GetAcceptLanguage()); msg != "" { + if id == "" { + id = c.GetSessionUsername() + if id == "" { + c.ResponseError(c.T("general:Missing parameter")) + return + } + } + oldUser := object.GetUser(id) + if oldUser == nil { + c.ResponseError(fmt.Sprintf(c.T("general:The user: %s doesn't exist"), id)) + return + } + + if msg := object.CheckUpdateUser(oldUser, &user, c.GetAcceptLanguage()); msg != "" { c.ResponseError(msg) return } + if pass, err := checkPermissionForUpdateUser(oldUser, &user, c); !pass { + c.ResponseError(err) + return + } columns := []string{} if columnsStr != "" { @@ -161,11 +174,6 @@ func (c *ApiController) UpdateUser() { isGlobalAdmin := c.IsGlobalAdmin() - if pass, err := checkPermissionForUpdateUser(id, user, c); !pass { - c.ResponseError(err) - return - } - affected := object.UpdateUser(id, &user, columns, isGlobalAdmin) if affected { object.UpdateUserToOriginalDatabase(&user) diff --git a/controllers/user_util.go b/controllers/user_util.go index 46ae0909..5972db39 100644 --- a/controllers/user_util.go +++ b/controllers/user_util.go @@ -20,8 +20,7 @@ import ( "github.com/casdoor/casdoor/object" ) -func checkPermissionForUpdateUser(userId string, newUser object.User, c *ApiController) (bool, string) { - oldUser := object.GetUser(userId) +func checkPermissionForUpdateUser(oldUser, newUser *object.User, c *ApiController) (bool, string) { organization := object.GetOrganizationByUser(oldUser) var itemsChanged []*object.AccountItem diff --git a/object/check.go b/object/check.go index 7416764b..879d256f 100644 --- a/object/check.go +++ b/object/check.go @@ -342,7 +342,7 @@ func CheckUsername(username string, lang string) string { return "" } -func CheckUpdateUser(oldUser *User, user *User, lang string) string { +func CheckUpdateUser(oldUser, user *User, lang string) string { if user.DisplayName == "" { return i18n.Translate(lang, "user:Display name cannot be empty") } diff --git a/web/src/locales/de/data.json b/web/src/locales/de/data.json index b0f2b17a..5c98d96a 100644 --- a/web/src/locales/de/data.json +++ b/web/src/locales/de/data.json @@ -41,6 +41,7 @@ "Enable signup - Tooltip": "Ob Benutzern erlaubt werden soll, ein neues Konto zu registrieren", "Failed to sign in": "Fehler bei der Anmeldung", "File uploaded successfully": "Datei erfolgreich hochgeladen", + "First, last": "First, last", "Follow organization theme": "Folge dem Theme der Organisation", "Form CSS": "Form CSS", "Form CSS - Edit": "Form CSS - Bearbeiten", @@ -49,15 +50,21 @@ "Form position - Tooltip": "Position der Anmelde-, Registrierungs- und Passwort-vergessen-Formulare", "Grant types": "Grant-Typen", "Grant types - Tooltip": "Wählen Sie aus, welche Grant-Typen im OAuth-Protokoll zulässig sind", + "Incremental": "Incremental", "Left": "Links", "Logged in successfully": "Erfolgreich eingeloggt", "Logged out successfully": "Erfolgreich ausgeloggt", "New Application": "Neue Anwendung", + "No verification": "No verification", "None": "kein(e)", + "Normal": "Normal", + "Only signup": "Only signup", "Please input your application!": "Bitte geben Sie Ihre Anwendung ein!", "Please input your organization!": "Bitte geben Sie Ihre Organisation ein!", "Please select a HTML file": "Bitte wählen Sie eine HTML-Datei aus", "Prompt page URL copied to clipboard successfully, please paste it into the incognito window or another browser": "Die URL der Seite wurde erfolgreich in die Zwischenablage kopiert. Bitte fügen Sie sie in einen Inkognito-Tab oder einen anderen Browser ein", + "Random": "Random", + "Real name": "Real name", "Redirect URL": "Weiterleitungs-URL", "Redirect URL (Assertion Consumer Service POST Binding URL) - Tooltip": "Weiterleitungs-URL (Assertion Consumer Service POST Binding URL)", "Redirect URLs": "Weiterleitungs-URLs", @@ -74,6 +81,8 @@ "Side panel HTML - Edit": "Sidepanel HTML - Bearbeiten", "Side panel HTML - Tooltip": "Passen Sie den HTML-Code für das Sidepanel der Login-Seite an", "Sign Up Error": "Registrierungsfehler", + "Signin": "Signin", + "Signin (Default True)": "Signin (Default True)", "Signin page URL copied to clipboard successfully, please paste it into the incognito window or another browser": "Die URL der Anmeldeseite wurde in die Zwischenablage kopiert. Bitte fügen Sie sie in einen Inkognito-Tab oder einen anderen Browser ein", "Signin session": "Anmeldesession", "Signup items": "Registrierungs Items", @@ -504,6 +513,8 @@ "Host - Tooltip": "Name des Hosts", "IdP": "IdP", "IdP certificate": "IdP-Zertifikat", + "Intelligent Validation": "Intelligent Validation", + "Internal": "Internal", "Issuer URL": "Issuer-URL", "Issuer URL - Tooltip": "Emittenten-URL", "Link copied to clipboard successfully": "Link wurde erfolgreich in die Zwischenablage kopiert", @@ -511,6 +522,7 @@ "Metadata - Tooltip": "SAML-Metadaten", "Method - Tooltip": "Anmeldeverfahren, QR-Code oder Silent-Login", "New Provider": "Neuer Provider", + "Normal": "Normal", "Parse": "parsen", "Parse metadata successfully": "Metadaten erfolgreich analysiert", "Path prefix": "Pfadpräfix", @@ -555,8 +567,10 @@ "Signup HTML": "Registrierungs-HTML", "Signup HTML - Edit": "Registrierung HTML - Bearbeiten", "Signup HTML - Tooltip": "Benutzerdefiniertes HTML zur Ersetzung des Standard-Registrierungs-Seitenstils", + "Silent": "Silent", "Site key": "Site-Key", "Site key - Tooltip": "Seitenschlüssel", + "Sliding Validation": "Sliding Validation", "Sub type": "Untertyp", "Sub type - Tooltip": "Unterart", "Template code": "Template-Code", @@ -564,6 +578,7 @@ "Test Email": "Test E-Mail", "Test Email - Tooltip": "E-Mail-Adresse zum Empfangen von Test-E-Mails", "Test SMTP Connection": "Testen Sie die SMTP-Verbindung", + "Third-party": "Third-party", "Token URL": "Token-URL", "Token URL - Tooltip": "Token-URL", "Type": "Typ", @@ -621,6 +636,7 @@ "The input is not valid Email!": "Die Eingabe ist keine gültige E-Mail-Adresse!", "The input is not valid Phone!": "Die Eingabe ist kein gültiges Telefon!", "Username": "Benutzername", + "Username - Tooltip": "Username - Tooltip", "Your account has been created!": "Ihr Konto wurde erstellt!", "Your confirmed password is inconsistent with the password!": "Dein bestätigtes Passwort stimmt nicht mit dem Passwort überein!", "sign in now": "Jetzt anmelden"