1
0

Made registration work

This commit is contained in:
konrad
2018-06-10 11:34:59 +02:00
committed by kolaente
parent 2ca4c521aa
commit 1bee67cac7
6 changed files with 14 additions and 20 deletions

49
routes/api/v1/login.go Normal file
View File

@ -0,0 +1,49 @@
package v1
import (
"crypto/md5"
"encoding/hex"
"git.kolaente.de/konrad/list/models"
"github.com/dgrijalva/jwt-go"
"github.com/labstack/echo"
"net/http"
"time"
)
// Login is the login handler
func Login(c echo.Context) error {
u := new(models.UserLogin)
if err := c.Bind(u); err != nil {
return c.JSON(http.StatusBadRequest, models.Message{"Please provide a username and password."})
}
// Check user
user, err := models.CheckUserCredentials(u)
if err != nil {
return c.JSON(http.StatusUnauthorized, models.Message{"Wrong username or password."})
}
// Create token
token := jwt.New(jwt.SigningMethodHS256)
// Set claims
claims := token.Claims.(jwt.MapClaims)
claims["username"] = user.Username
claims["email"] = user.Email
claims["id"] = user.ID
claims["exp"] = time.Now().Add(time.Hour * 72).Unix()
avatar := md5.Sum([]byte(user.Email))
claims["avatar"] = hex.EncodeToString(avatar[:])
// Generate encoded token and send it as response.
t, err := token.SignedString(models.Config.JWTLoginSecret)
if err != nil {
return err
}
return c.JSON(http.StatusOK, map[string]string{
"token": t,
})
}

View File

@ -7,6 +7,7 @@ import (
"net/http"
"strconv"
"strings"
"fmt"
)
// UserAddOrUpdate is the handler to add a user
@ -51,18 +52,14 @@ func UserAddOrUpdate(c echo.Context) error {
return c.JSON(http.StatusInternalServerError, models.Message{"Could not check if the user exists."})
}
// Get the doer options
doer, err := models.GetCurrentUser(c)
if err != nil {
return err
}
fmt.Println(exists)
// Insert or update the user
var newUser models.User
if exists {
newUser, err = models.UpdateUser(*datUser, &doer)
newUser, err = models.UpdateUser(*datUser)
} else {
newUser, err = models.CreateUser(*datUser, &doer)
newUser, err = models.CreateUser(*datUser)
}
if err != nil {