chore: Adds "day-one"/v2.0.1 bug fixes.
All checks were successful
Release code / build (push) Successful in 11m41s
All checks were successful
Release code / build (push) Successful in 11m41s
This fixes database error reporting, as well as majorly fixes users not being able to authenticate to the API if you used the automated migration setup, as the password would remain in hex encoding. We now decode the hexadecimal and then change it to the far more compact base64 encoding before adding it to the database. This should fix login, and not cause 500 Interal Server Errors anymore. Sorry folks!
This commit is contained in:
parent
d334878599
commit
538c5b6c51
13 changed files with 34 additions and 14 deletions
|
@ -3,6 +3,7 @@ package main
|
|||
import (
|
||||
"compress/gzip"
|
||||
"encoding/base64"
|
||||
"encoding/hex"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"io"
|
||||
|
@ -222,11 +223,18 @@ func backupRestoreEntrypoint(cCtx *cli.Context) error {
|
|||
username = *user.Username
|
||||
}
|
||||
|
||||
bcryptPassword, err := hex.DecodeString(user.Password)
|
||||
|
||||
if err != nil {
|
||||
log.Errorf("Failed to decode hex encoded password: %s", err.Error())
|
||||
continue
|
||||
}
|
||||
|
||||
userDatabase := &dbcore.User{
|
||||
Email: user.Email,
|
||||
Username: username,
|
||||
Name: user.Name,
|
||||
Password: user.Password,
|
||||
Password: base64.StdEncoding.EncodeToString(bcryptPassword),
|
||||
IsBot: user.IsBot,
|
||||
|
||||
Tokens: tokens,
|
||||
|
@ -235,6 +243,7 @@ func backupRestoreEntrypoint(cCtx *cli.Context) error {
|
|||
|
||||
if err := dbcore.DB.Create(userDatabase).Error; err != nil {
|
||||
log.Errorf("Failed to create user: %s", err.Error())
|
||||
continue
|
||||
}
|
||||
|
||||
if uint(bestEffortOwnerUIDFromBackup) == user.ID {
|
||||
|
@ -255,6 +264,7 @@ func backupRestoreEntrypoint(cCtx *cli.Context) error {
|
|||
|
||||
if err := dbcore.DB.Create(backendDatabase).Error; err != nil {
|
||||
log.Errorf("Failed to create backend: %s", err.Error())
|
||||
continue
|
||||
}
|
||||
|
||||
log.Infof("Migrating proxies for backend ID '%d'", backend.ID)
|
||||
|
|
|
@ -69,7 +69,7 @@ func RemoveBackend(c *gin.Context) {
|
|||
backendRequest := dbcore.DB.Where("id = ?", req.BackendID).Find(&backend)
|
||||
|
||||
if backendRequest.Error != nil {
|
||||
log.Warnf("failed to find if backend exists or not: %s", backendRequest.Error)
|
||||
log.Warnf("failed to find if backend exists or not: %s", backendRequest.Error.Error())
|
||||
|
||||
c.JSON(http.StatusInternalServerError, gin.H{
|
||||
"error": "Failed to find if backend exists",
|
||||
|
|
|
@ -87,7 +87,7 @@ func GetConnections(c *gin.Context) {
|
|||
proxyRequest := dbcore.DB.Where("id = ?", req.Id).First(&proxy)
|
||||
|
||||
if proxyRequest.Error != nil {
|
||||
log.Warnf("failed to find proxy: %s", proxyRequest.Error)
|
||||
log.Warnf("failed to find proxy: %s", proxyRequest.Error.Error())
|
||||
|
||||
c.JSON(http.StatusInternalServerError, gin.H{
|
||||
"error": "Failed to find forward entry",
|
||||
|
|
|
@ -84,7 +84,7 @@ func CreateProxy(c *gin.Context) {
|
|||
backendRequest := dbcore.DB.Where("id = ?", req.ProviderID).First(&backend)
|
||||
|
||||
if backendRequest.Error != nil {
|
||||
log.Warnf("failed to find if backend exists or not: %s", backendRequest.Error)
|
||||
log.Warnf("failed to find if backend exists or not: %s", backendRequest.Error.Error())
|
||||
|
||||
c.JSON(http.StatusInternalServerError, gin.H{
|
||||
"error": "Failed to find if backend exists",
|
||||
|
|
|
@ -69,7 +69,7 @@ func RemoveProxy(c *gin.Context) {
|
|||
proxyRequest := dbcore.DB.Where("id = ?", req.ID).Find(&proxy)
|
||||
|
||||
if proxyRequest.Error != nil {
|
||||
log.Warnf("failed to find if proxy exists or not: %s", proxyRequest.Error)
|
||||
log.Warnf("failed to find if proxy exists or not: %s", proxyRequest.Error.Error())
|
||||
|
||||
c.JSON(http.StatusInternalServerError, gin.H{
|
||||
"error": "Failed to find if forward rule exists",
|
||||
|
|
|
@ -69,7 +69,7 @@ func StartProxy(c *gin.Context) {
|
|||
proxyRequest := dbcore.DB.Where("id = ?", req.ID).Find(&proxy)
|
||||
|
||||
if proxyRequest.Error != nil {
|
||||
log.Warnf("failed to find if proxy exists or not: %s", proxyRequest.Error)
|
||||
log.Warnf("failed to find if proxy exists or not: %s", proxyRequest.Error.Error())
|
||||
|
||||
c.JSON(http.StatusInternalServerError, gin.H{
|
||||
"error": "Failed to find if forward rule exists",
|
||||
|
|
|
@ -69,7 +69,7 @@ func StopProxy(c *gin.Context) {
|
|||
proxyRequest := dbcore.DB.Where("id = ?", req.ID).Find(&proxy)
|
||||
|
||||
if proxyRequest.Error != nil {
|
||||
log.Warnf("failed to find if proxy exists or not: %s", proxyRequest.Error)
|
||||
log.Warnf("failed to find if proxy exists or not: %s", proxyRequest.Error.Error())
|
||||
|
||||
c.JSON(http.StatusInternalServerError, gin.H{
|
||||
"error": "Failed to find if forward rule exists",
|
||||
|
|
|
@ -59,7 +59,7 @@ func CreateUser(c *gin.Context) {
|
|||
userRequest := dbcore.DB.Where("email = ? OR username = ?", req.Email, req.Username).Find(&user)
|
||||
|
||||
if userRequest.Error != nil {
|
||||
log.Warnf("failed to find if user exists or not: %s", userRequest.Error)
|
||||
log.Warnf("failed to find if user exists or not: %s", userRequest.Error.Error())
|
||||
|
||||
c.JSON(http.StatusInternalServerError, gin.H{
|
||||
"error": "Failed to find if user exists",
|
||||
|
|
|
@ -65,7 +65,7 @@ func LoginUser(c *gin.Context) {
|
|||
userRequest := dbcore.DB.Where(userFindRequest, userFindRequestArguments...).Find(&user)
|
||||
|
||||
if userRequest.Error != nil {
|
||||
log.Warnf("failed to find if user exists or not: %s", userRequest.Error)
|
||||
log.Warnf("failed to find if user exists or not: %s", userRequest.Error.Error())
|
||||
|
||||
c.JSON(http.StatusInternalServerError, gin.H{
|
||||
"error": "Failed to find if user exists",
|
||||
|
@ -88,7 +88,7 @@ func LoginUser(c *gin.Context) {
|
|||
_, err := base64.StdEncoding.Decode(decodedPassword, []byte(user.Password))
|
||||
|
||||
if err != nil {
|
||||
log.Warnf("failed to decode password in database: %s", userRequest.Error)
|
||||
log.Warnf("failed to decode password in database: %s", err.Error())
|
||||
|
||||
c.JSON(http.StatusInternalServerError, gin.H{
|
||||
"error": "Failed to parse database result for password",
|
||||
|
|
|
@ -39,7 +39,7 @@ func RefreshUserToken(c *gin.Context) {
|
|||
tokenRequest := dbcore.DB.Where("token = ?", req.Token).Find(&tokenInDatabase)
|
||||
|
||||
if tokenRequest.Error != nil {
|
||||
log.Warnf("failed to find if token exists or not: %s", tokenRequest.Error)
|
||||
log.Warnf("failed to find if token exists or not: %s", tokenRequest.Error.Error())
|
||||
|
||||
c.JSON(http.StatusInternalServerError, gin.H{
|
||||
"error": "Failed to find if token exists",
|
||||
|
@ -79,7 +79,7 @@ func RefreshUserToken(c *gin.Context) {
|
|||
userRequest := dbcore.DB.Where("id = ?", tokenInDatabase.UserID).Find(&user)
|
||||
|
||||
if tokenRequest.Error != nil {
|
||||
log.Warnf("failed to find if token user or not: %s", userRequest.Error)
|
||||
log.Warnf("failed to find if token user or not: %s", userRequest.Error.Error())
|
||||
|
||||
c.JSON(http.StatusInternalServerError, gin.H{
|
||||
"error": "Failed to find user",
|
||||
|
|
|
@ -77,7 +77,7 @@ func RemoveUser(c *gin.Context) {
|
|||
userRequest := dbcore.DB.Where("id = ?", uid).Find(customUser)
|
||||
|
||||
if userRequest.Error != nil {
|
||||
log.Warnf("failed to find if user exists or not: %s", userRequest.Error)
|
||||
log.Warnf("failed to find if user exists or not: %s", userRequest.Error.Error())
|
||||
|
||||
c.JSON(http.StatusInternalServerError, gin.H{
|
||||
"error": "Failed to find if user exists",
|
||||
|
|
|
@ -77,7 +77,7 @@ func GetUserFromJWT(token string) (*dbcore.User, error) {
|
|||
userRequest := dbcore.DB.Preload("Permissions").Where("id = ?", uint(uid)).Find(&user)
|
||||
|
||||
if userRequest.Error != nil {
|
||||
return user, fmt.Errorf("failed to find if user exists or not: %s", userRequest.Error)
|
||||
return user, fmt.Errorf("failed to find if user exists or not: %s", userRequest.Error.Error())
|
||||
}
|
||||
|
||||
userExists := userRequest.RowsAffected > 0
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue