summaryrefslogtreecommitdiff
path: root/auth/password_middleware.go
diff options
context:
space:
mode:
Diffstat (limited to 'auth/password_middleware.go')
-rw-r--r--auth/password_middleware.go73
1 files changed, 0 insertions, 73 deletions
diff --git a/auth/password_middleware.go b/auth/password_middleware.go
deleted file mode 100644
index 3fda389..0000000
--- a/auth/password_middleware.go
+++ /dev/null
@@ -1,73 +0,0 @@
-/* OpenBills-server - Server for libre billing software OpenBills-web
- * Copyright (C) 2022 Vidhu Kant Sharma <vidhukant@vidhukant.xyz>
-
- * 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 <https://www.gnu.org/licenses/>.
- */
-
-package auth
-
-import (
- "github.com/gin-gonic/gin"
- "net/http"
- "log"
- "context"
- "golang.org/x/crypto/bcrypt"
- "github.com/MikunoNaka/OpenBills-server/user"
- "go.mongodb.org/mongo-driver/bson"
- "go.mongodb.org/mongo-driver/mongo"
-)
-
-func checkPassword() gin.HandlerFunc {
- return func(ctx *gin.Context) {
- var u user.User
- ctx.BindJSON(&u)
-
- filter := bson.M{
- "$or": []bson.M{
- // u.UserName in this case can be either username or email
- {"Email": u.UserName},
- {"UserName": u.UserName},
- },
- }
-
- // check if the user exists in DB
- var user user.User
- err := db.FindOne(context.TODO(), filter).Decode(&user)
- if err != nil {
- if err == mongo.ErrNoDocuments {
- ctx.JSON(http.StatusNotFound, gin.H{"error": "user does not exist"})
- } else {
- log.Printf("Error while reading user from DB to check password: %v", err.Error())
- ctx.JSON(http.StatusInternalServerError, gin.H{"error": "internal server error"})
- }
- ctx.Abort()
- } else {
- // compare hash and password
- err = bcrypt.CompareHashAndPassword([]byte(user.Password), []byte(u.Password))
- if err != nil {
- if err == bcrypt.ErrMismatchedHashAndPassword {
- ctx.JSON(http.StatusUnauthorized, gin.H{"error": "incorrect password"})
- } else {
- log.Printf("Error while checking password: %v", err.Error())
- ctx.JSON(http.StatusInternalServerError, gin.H{"error": "internal server error"})
- }
- ctx.Abort()
- }
- }
-
- // everything's fine!
- ctx.Set("user", user)
- ctx.Next()
- }
-}