Bugfixes. Optimizations/refactor. Add redis for player-cache. Add docker files. Replace sqlite dep. Single-Calc for existing players. Game-Metrics in JSON.
This commit is contained in:
27
auth.go
27
auth.go
@@ -3,12 +3,12 @@ package main
|
||||
import (
|
||||
"InfantrySkillCalculator/controllers"
|
||||
"InfantrySkillCalculator/models"
|
||||
"InfantrySkillCalculator/utils"
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/gin-gonic/gin"
|
||||
"golang.org/x/crypto/bcrypt"
|
||||
"gorm.io/gorm"
|
||||
"internal/session"
|
||||
"log"
|
||||
"net/http"
|
||||
)
|
||||
@@ -48,25 +48,24 @@ func hashPassword(password string) (string, error) {
|
||||
|
||||
func AuthRequired() gin.HandlerFunc {
|
||||
return func(c *gin.Context) {
|
||||
session, _ := utils.Store.Get(c.Request, utils.LoginSessionName)
|
||||
if auth, ok := session.Values["authenticated"].(bool); !ok || !auth || !controllers.IsUserEnabled(session.Values["username"].(string)) {
|
||||
auth, okAuth := session.GetAuthenticated(c)
|
||||
username, okUser := session.GetUsername(c)
|
||||
|
||||
if !okAuth || !okUser || !auth || !controllers.IsUserEnabled(username) {
|
||||
redirectToLogin(c)
|
||||
return
|
||||
}
|
||||
|
||||
c.Next()
|
||||
}
|
||||
}
|
||||
|
||||
func AdminAuthRequired() gin.HandlerFunc {
|
||||
return func(c *gin.Context) {
|
||||
session, _ := utils.Store.Get(c.Request, utils.LoginSessionName)
|
||||
if auth, ok := session.Values["authenticated"].(bool); !ok || !auth {
|
||||
redirectToLogin(c)
|
||||
return
|
||||
}
|
||||
auth, okAuth := session.GetAuthenticated(c)
|
||||
username, okUser := session.GetUsername(c)
|
||||
|
||||
username, ok := session.Values["username"].(string)
|
||||
if !ok || !controllers.IsUserEnabled(username) || !controllers.IsUserAdmin(username) {
|
||||
if !okAuth || !okUser || !auth || !controllers.IsUserEnabled(username) || !controllers.IsUserAdmin(username) {
|
||||
redirectToLogin(c)
|
||||
return
|
||||
}
|
||||
@@ -76,8 +75,7 @@ func AdminAuthRequired() gin.HandlerFunc {
|
||||
}
|
||||
|
||||
func isUserAdmin(c *gin.Context) bool {
|
||||
session, _ := utils.Store.Get(c.Request, utils.LoginSessionName)
|
||||
username, ok := session.Values["username"].(string)
|
||||
username, ok := session.GetUsername(c)
|
||||
if !ok {
|
||||
return false
|
||||
}
|
||||
@@ -85,10 +83,7 @@ func isUserAdmin(c *gin.Context) bool {
|
||||
}
|
||||
|
||||
func redirectToLogin(c *gin.Context) {
|
||||
session, _ := utils.Store.Get(c.Request, utils.LoginSessionName)
|
||||
session.Options.MaxAge = -1
|
||||
err := session.Save(c.Request, c.Writer)
|
||||
if err != nil {
|
||||
if err := session.InvalidateSession(c); err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
c.Redirect(http.StatusFound, "/login")
|
||||
|
||||
Reference in New Issue
Block a user