mirror of
https://github.com/NginxProxyManager/nginx-proxy-manager.git
synced 2025-08-27 19:20:04 +00:00
55 lines
1.2 KiB
Go
55 lines
1.2 KiB
Go
package handler
|
|
|
|
import (
|
|
"encoding/json"
|
|
"net/http"
|
|
|
|
c "npm/internal/api/context"
|
|
h "npm/internal/api/http"
|
|
"npm/internal/entity/auth"
|
|
"npm/internal/logger"
|
|
)
|
|
|
|
// SetAuth ...
|
|
// Route: POST /users/:userID/auth
|
|
func SetAuth() func(http.ResponseWriter, *http.Request) {
|
|
return func(w http.ResponseWriter, r *http.Request) {
|
|
bodyBytes, _ := r.Context().Value(c.BodyCtxKey).([]byte)
|
|
|
|
// TODO:
|
|
// delete old auth for user
|
|
// test endpoint
|
|
|
|
var newAuth auth.Model
|
|
err := json.Unmarshal(bodyBytes, &newAuth)
|
|
if err != nil {
|
|
h.ResultErrorJSON(w, r, http.StatusBadRequest, h.ErrInvalidPayload.Error(), nil)
|
|
return
|
|
}
|
|
|
|
userID, _, userIDErr := getUserIDFromRequest(r)
|
|
if userIDErr != nil {
|
|
h.ResultErrorJSON(w, r, http.StatusBadRequest, userIDErr.Error(), nil)
|
|
return
|
|
}
|
|
|
|
newAuth.UserID = userID
|
|
if newAuth.Type == auth.TypePassword {
|
|
err := newAuth.SetPassword(newAuth.Secret)
|
|
if err != nil {
|
|
logger.Error("SetPasswordError", err)
|
|
}
|
|
}
|
|
|
|
if err = newAuth.Save(); err != nil {
|
|
logger.Error("AuthSaveError", err)
|
|
h.ResultErrorJSON(w, r, http.StatusInternalServerError, "Unable to save Authentication for User", nil)
|
|
return
|
|
}
|
|
|
|
newAuth.Secret = ""
|
|
|
|
h.ResultResponseJSON(w, r, http.StatusOK, newAuth)
|
|
}
|
|
}
|