From 2ab169ef6b276650152fc062bb35ce2847ac5433 Mon Sep 17 00:00:00 2001 From: Braeden Sowinski Date: Fri, 15 Apr 2022 13:30:35 -0700 Subject: [PATCH] commit dashboard authentication --- controllers/authController.go | 2 +- controllers/viewsController.go | 42 ++++++++++++++++++++++++++++++++-- 2 files changed, 41 insertions(+), 3 deletions(-) diff --git a/controllers/authController.go b/controllers/authController.go index 7a06c6d..5aa2082 100644 --- a/controllers/authController.go +++ b/controllers/authController.go @@ -235,5 +235,5 @@ func Login(c *fiber.Ctx) error { } c.Cookie(&cookie) - return c.Status(fiber.StatusNotImplemented).Render("dasboard", fiber.Map{}) + return c.Status(fiber.StatusNotImplemented).Redirect("/dashboard") } diff --git a/controllers/viewsController.go b/controllers/viewsController.go index 87f9ccb..b326826 100644 --- a/controllers/viewsController.go +++ b/controllers/viewsController.go @@ -1,8 +1,12 @@ package controllers import ( - "github.com/SowinskiBraeden/gfbmb/messageBox" + "context" + + "github.com/SowinskiBraeden/BugBeGone/models" + "github.com/dgrijalva/jwt-go" "github.com/gofiber/fiber/v2" + "go.mongodb.org/mongo-driver/bson" ) // Render Index @@ -18,6 +22,40 @@ func RegisterPage(c *fiber.Ctx) error { func LoginPage(c *fiber.Ctx) error { return c.Render("login", fiber.Map{ - "errorMsg": messageBox.EmptyMessageBox(), + "msg": "", + "errorMsg": "", + }) +} + +func DashboardPage(c *fiber.Ctx) error { + cookie := c.Cookies("jwt") + + token, err := jwt.ParseWithClaims(cookie, &jwt.StandardClaims{}, func(token *jwt.Token) (interface{}, error) { + return []byte(SecretKey), nil + }) + // This returns not authorized for both admin and student + if err != nil { + return c.Status(fiber.StatusUnauthorized).Render("login", fiber.Map{ + "msg": "not authorized", + "errorMsg": "", + }) + } + + claims := token.Claims.(*jwt.StandardClaims) + uid := claims.Issuer + + var user models.User + findErr := userCollection.FindOne(context.TODO(), bson.M{"uid": uid}).Decode(&user) + if findErr != nil { + return c.Status(fiber.StatusUnauthorized).Render("login", fiber.Map{ + "msg": "User not found", + "errorMsg": "", + }) + } + + return c.Status(fiber.StatusAccepted).Render("dashboard", fiber.Map{ + "msg": "", + "errorMsg": "", + "user": user, }) }