package handler import ( "encoding/json" "errors" "net/http" "gitea.kleinsense.nl/DariusKlein/kleinTodo/common" "gitea.kleinsense.nl/DariusKlein/kleinTodo/common/jwt" ) func LoginHandler(w http.ResponseWriter, r *http.Request) { var user common.Credentials // Decode input err := json.NewDecoder(r.Body).Decode(&user) if handleError(w, http.StatusInternalServerError, err) { return } // Get data store db, err := common.GetTodoDataStore() if handleError(w, http.StatusInternalServerError, err) { return } password := db.GetFromBucketByKey(common.UserBucket, user.Username) if user.ComparePasswords(password) { w.Header().Set(common.AuthHeader, jwt.CreateUserJWT(user.Username)) w.WriteHeader(http.StatusOK) if handleError(w, http.StatusInternalServerError, err) { return } } else { handleError(w, http.StatusUnauthorized, errors.New("username or password is incorrect")) return } }