/* openbills - Server for web based Libre Billing Software * Copyright (C) 2023 Vidhu Kant Sharma * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ package auth import ( "vidhukant.com/openbills/user" "golang.org/x/crypto/bcrypt" "github.com/spf13/viper" "github.com/gin-gonic/gin" "net/http" ) var COST int func init() { COST = viper.GetInt("cryptography.password_hashing_cost") } func handleSignUp (ctx *gin.Context) { var user user.User ctx.Bind(&user) var err error // hash password var bytes []byte bytes, err = bcrypt.GenerateFromPassword([]byte(user.Password), 14) if err != nil { // TODO: handle potential errors ctx.Error(err) ctx.Abort() return } user.Password = string(bytes) err = user.Create() if err != nil { ctx.Error(err) ctx.Abort() return } ctx.JSON(http.StatusOK, gin.H{ "message": "success", "data": user, }) } func handleSignIn (ctx *gin.Context) { var u user.User ctx.Bind(&u) var err error err = user.CheckPassword(u.ID, u.Password) if err != nil { // TODO: handle potential errors ctx.Error(err) ctx.Abort() return } ctx.JSON(http.StatusOK, gin.H{ "message": "success", "data": u, }) }