Skip to content

Commit

Permalink
Change username setting (thomiceli#190)
Browse files Browse the repository at this point in the history
  • Loading branch information
thomiceli committed Jan 4, 2024
1 parent 5058ca8 commit 97707f7
Show file tree
Hide file tree
Showing 4 changed files with 146 additions and 86 deletions.
1 change: 1 addition & 0 deletions internal/i18n/locales/en-US.yml
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,7 @@ settings.delete-ssh-key-confirm: Confirm deletion of SSH key
settings.ssh-key-added-at: Added
settings.ssh-key-never-used: Never used
settings.ssh-key-last-used: Last used
settings.change-username: Change username
settings.create-password: Create password
settings.create-password-help: Create your password to login to Opengist via HTTP
settings.change-password: Change password
Expand Down
1 change: 1 addition & 0 deletions internal/web/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -222,6 +222,7 @@ func NewServer(isDev bool) *Server {
g1.POST("/settings/ssh-keys", sshKeysProcess, logged)
g1.DELETE("/settings/ssh-keys/:id", sshKeysDelete, logged)
g1.PUT("/settings/password", passwordProcess, logged)
g1.PUT("/settings/username", usernameProcess, logged)

g2 := g1.Group("/admin-panel")
{
Expand Down
39 changes: 39 additions & 0 deletions internal/web/settings.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,9 @@ package web
import (
"crypto/md5"
"fmt"
"github.com/thomiceli/opengist/internal/config"
"os"
"path/filepath"
"strconv"
"strings"
"time"
Expand Down Expand Up @@ -139,3 +142,39 @@ func passwordProcess(ctx echo.Context) error {
addFlash(ctx, "Password updated", "success")
return redirect(ctx, "/settings")
}

func usernameProcess(ctx echo.Context) error {
user := getUserLogged(ctx)

dto := new(db.UserDTO)
if err := ctx.Bind(dto); err != nil {
return errorRes(400, "Cannot bind data", err)
}
dto.Password = user.Password

if err := ctx.Validate(dto); err != nil {
addFlash(ctx, validationMessages(&err), "error")
return redirect(ctx, "/settings")
}

if exists, err := db.UserExists(dto.Username); err != nil || exists {
addFlash(ctx, "Username already exists", "error")
return redirect(ctx, "/settings")
}

err := os.Rename(
filepath.Join(config.C.OpengistHome, "repos", user.Username),
filepath.Join(config.C.OpengistHome, "repos", dto.Username))
if err != nil {
return errorRes(500, "Cannot rename user directory", err)
}

user.Username = dto.Username

if err := user.Update(); err != nil {
return errorRes(500, "Cannot update username", err)
}

addFlash(ctx, "Username updated", "success")
return redirect(ctx, "/settings")
}
Loading

0 comments on commit 97707f7

Please sign in to comment.