mirror of https://github.com/portainer/portainer
fix(api): check if admin user already exists when calling the /users/admin/init endpoint (#494)
parent
2bdc9322de
commit
27e584fc14
|
@ -7,7 +7,8 @@ const (
|
||||||
|
|
||||||
// User errors.
|
// User errors.
|
||||||
const (
|
const (
|
||||||
ErrUserNotFound = Error("User not found")
|
ErrUserNotFound = Error("User not found")
|
||||||
|
ErrAdminAlreadyInitialized = Error("Admin user already initialized")
|
||||||
)
|
)
|
||||||
|
|
||||||
// Endpoint errors.
|
// Endpoint errors.
|
||||||
|
|
|
@ -227,18 +227,28 @@ func (handler *UserHandler) handlePostAdminInit(w http.ResponseWriter, r *http.R
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
user := &portainer.User{
|
user, err := handler.UserService.User("admin")
|
||||||
Username: "admin",
|
if err == portainer.ErrUserNotFound {
|
||||||
}
|
user := &portainer.User{
|
||||||
user.Password, err = handler.CryptoService.Hash(req.Password)
|
Username: "admin",
|
||||||
if err != nil {
|
}
|
||||||
Error(w, portainer.ErrCryptoHashFailure, http.StatusBadRequest, handler.Logger)
|
user.Password, err = handler.CryptoService.Hash(req.Password)
|
||||||
|
if err != nil {
|
||||||
|
Error(w, portainer.ErrCryptoHashFailure, http.StatusBadRequest, handler.Logger)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
err = handler.UserService.UpdateUser(user)
|
||||||
|
if err != nil {
|
||||||
|
Error(w, err, http.StatusInternalServerError, handler.Logger)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
} else if err != nil {
|
||||||
|
Error(w, err, http.StatusInternalServerError, handler.Logger)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
if user != nil {
|
||||||
err = handler.UserService.UpdateUser(user)
|
Error(w, portainer.ErrAdminAlreadyInitialized, http.StatusForbidden, handler.Logger)
|
||||||
if err != nil {
|
|
||||||
Error(w, err, http.StatusInternalServerError, handler.Logger)
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue