diff --git a/backend/src/middleware/auth.go b/backend/src/middleware/auth.go deleted file mode 100644 index 32bc1312b..000000000 --- a/backend/src/middleware/auth.go +++ /dev/null @@ -1,91 +0,0 @@ -package middleware - -import ( - "backend/src/models" - "fmt" - "strings" - - "github.com/gofiber/fiber/v2" - "github.com/golang-jwt/jwt" -) - -type JWTTemplate struct { - Role string `json:"role"` - Id string `json:"id"` - AZP string `json:"azp"` - EXP int `json:"exp"` - IAT int `json:"iat"` - ISS string `json:"iss"` - JTI string `json:"jti"` - NBF int `json:"nbf"` - SUB string `json:"sub"` -} - -// A middleware function that checks if the user is authenticated -func AuthenticationMiddleware(c *fiber.Ctx) error { - - sessionToken := c.Get("Authorization")[7:] - sessionToken = strings.TrimPrefix(sessionToken, "Bearer ") - - token, err := parseToken(sessionToken) - if err != nil { - return fiber.NewError(fiber.StatusUnauthorized, "Error parsing token") - } - - if token.Valid { - return c.Next() - } - - return fiber.NewError(fiber.StatusUnauthorized, "Invalid token") -} - -func authorize(requiredRole models.UserRole, requiredPermissions []string) fiber.Handler { - return func(c *fiber.Ctx) error { - // Extract user information from the request - user := getUserFromToken(c.Get("Authorization")) - - - // Continue to the next middleware or route handler - return c.Next() - } -} - - -func getUserFromToken(tokenString string) *JWT { - token, err := parseToken(tokenString) - if err != nil { - fmt.Println("error parsing token") - } - - - if claims, ok := token.Claims.(jwt.MapClaims); ok && token.Valid { - fmt.Println(claims["role"]) - return &JWT{ - Role: claims["role"].(string), - Id: claims["id"].(string), - AZP: claims["azp"].(string), - EXP: claims["exp"].(int), - IAT: claims["iat"].(int), - ISS: claims["iss"].(string), - JTI: claims["jti"].(string), - NBF: claims["nbf"].(int), - SUB: claims["sub"].(string), - } - - } else { - fmt.Println("error getting claims") - } - - return nil -} - -func parseToken(tokenString string) (*jwt.Token, error) { - token, err := jwt.Parse(tokenString, func(token *jwt.Token) (interface{}, error) { - return []byte("sk_test_YOzhvkCIDAK2IcUi5K24naDQh3RoHlTW9xGXzaThNm"), nil - }) - if err != nil { - return nil, err - } - - return token, nil -} \ No newline at end of file diff --git a/backend/src/models/permission.go b/backend/src/models/permission.go deleted file mode 100644 index c9df67ffe..000000000 --- a/backend/src/models/permission.go +++ /dev/null @@ -1,90 +0,0 @@ -package models - -type Permission string - -const ( - UserRead Permission = "user:read" - UserWrite Permission = "user:write" - UserDelete Permission = "user:delete" - - TagRead Permission = "tag:read" - TagWrite Permission = "tag:write" - TagCreate Permission = "tag:create" - TagDelete Permission = "tag:delete" - - ClubRead Permission = "club:read" - ClubWrite Permission = "club:write" - ClubCreate Permission = "club:create" - ClubDelete Permission = "club:delete" - - PointOfContactRead Permission = "pointOfContact:read" - PointOfContactCreate Permission = "pointOfContact:create" - PointOfContactWrite Permission = "pointOfContact:write" - PointOfContactDelete Permission = "pointOfContact:delete" - - CommentRead Permission = "comment:read" - CommentCreate Permission = "comment:create" - CommentWrite Permission = "comment:write" - CommentDelete Permission = "comment:delete" - - EventRead Permission = "event:read" - EventWrite Permission = "event:write" - EventCreate Permission = "event:create" - EventDelete Permission = "event:delete" - - ContactRead Permission = "contact:read" - ContactWrite Permission = "contact:write" - ContactCreate Permission = "contact:create" - ContactDelete Permission = "contact:delete" - - CategoryRead Permission = "category:read" - CategoryWrite Permission = "category:write" - CategoryCreate Permission = "category:create" - CategoryDelete Permission = "category:delete" - - NotificationRead Permission = "notification:read" - NotificationWrite Permission = "notification:write" - NotificationCreate Permission = "notification:create" - NotificationDelete Permission = "notification:delete" -) - -var rolePermissions = map[UserRole][]Permission{ - Super: { - UserRead, UserWrite, UserDelete, - TagRead, TagCreate, TagWrite, TagDelete, - ClubRead, ClubCreate, ClubWrite, ClubDelete, - PointOfContactRead, PointOfContactCreate, PointOfContactWrite, PointOfContactDelete, - CommentRead, CommentCreate, CommentWrite, CommentDelete, - EventRead, EventCreate, EventWrite, EventDelete, - ContactRead, ContactCreate, ContactWrite, ContactDelete, - CategoryRead, CategoryCreate, CategoryWrite, CategoryDelete, - NotificationRead, NotificationCreate, NotificationWrite, NotificationDelete, - }, - ClubAdmin: { - UserRead, UserWrite, - TagRead, TagCreate, TagWrite, TagDelete, - ClubRead, ClubCreate, ClubWrite, ClubDelete, - PointOfContactRead, PointOfContactCreate, PointOfContactWrite, PointOfContactDelete, - CommentRead, CommentCreate, CommentWrite, CommentDelete, - EventRead, EventCreate, EventWrite, EventDelete, - ContactRead, ContactCreate, ContactWrite, ContactDelete, - CategoryRead, CategoryCreate, CategoryWrite, CategoryDelete, - NotificationRead, NotificationCreate, NotificationWrite, NotificationDelete, - }, - Student: { - UserRead, - TagRead, - ClubRead, - PointOfContactRead, - CommentRead, - EventRead, - ContactRead, - CategoryRead, - NotificationRead, - }, -} - -// Returns the permissions for a given role -func GetPermissions(role UserRole) []Permission { - return rolePermissions[role] -}