Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a797700685 | ||
|
|
d7890f747b | ||
|
|
e469b61bb2 | ||
|
|
42c4f1d915 |
3
.gitignore
vendored
3
.gitignore
vendored
@@ -1 +1,2 @@
|
||||
*.log
|
||||
*.log
|
||||
*.db
|
||||
18
README.md
18
README.md
@@ -21,13 +21,12 @@ It provides ready-to-use user authentication (login, refresh, logout, user info)
|
||||
|
||||
```
|
||||
AccessHandler/
|
||||
├── handlers/
|
||||
│ ├── access_handler.go # AccessHandler initialization
|
||||
│ ├── db_handler.go # Database handler using GORM
|
||||
│ ├── login.go # Login, Refresh, Me, Logout handlers
|
||||
│ ├── middleware.go # middleware authentification
|
||||
| ├── role.go # database handling for roles
|
||||
| ├── user.go # database users for roles
|
||||
├── access_handler.go # AccessHandler initialization
|
||||
├── db_handler.go # Database handler using GORM
|
||||
├── login.go # Login, Refresh, Me, Logout handlers
|
||||
├── middleware.go # middleware authentification
|
||||
├── role.go # database handling for roles
|
||||
├── user.go # database users for roles
|
||||
|
|
||||
├── models/
|
||||
│ ├── jsonResponse.go # Json responses model
|
||||
@@ -79,7 +78,7 @@ go get https://gitea.tecamino.com/paadi/tecamino-logger/logging
|
||||
|
||||
## 🔑 Authentication Constants
|
||||
|
||||
In `handlers/login.go`:
|
||||
In `login.go`:
|
||||
|
||||
```go
|
||||
// -----------------------------
|
||||
@@ -119,7 +118,6 @@ var REFRESH_SECRET = []byte("*")
|
||||
package main
|
||||
|
||||
import (
|
||||
"AccessHandler/handlers"
|
||||
"gitea.tecamino.com/paadi/tecamino-logger/logging"
|
||||
"github.com/gin-gonic/gin"
|
||||
"log"
|
||||
@@ -127,7 +125,7 @@ import (
|
||||
|
||||
func main() {
|
||||
logger, _ := logging.NewLogger("server.log", nil)
|
||||
accessHandler, err := handlers.NewAccessHandler("access.db", logger)
|
||||
accessHandler, err := NewAccessHandler("access.db", logger)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package handlers
|
||||
package AccessHandler
|
||||
|
||||
import "gitea.tecamino.com/paadi/tecamino-logger/logging"
|
||||
|
||||
@@ -35,7 +35,7 @@ type AccessHandler struct {
|
||||
// - Default role(s)
|
||||
//
|
||||
// Parameters:
|
||||
// - dbPath: The file path or connection string for the database.
|
||||
// - dbPath: The file path to the database.
|
||||
// - logger: Optional pointer to a logging.Logger instance. If nil, a new one is created.
|
||||
//
|
||||
// Returns:
|
||||
@@ -43,12 +43,12 @@ type AccessHandler struct {
|
||||
// - err: Any error that occurs during initialization.
|
||||
//
|
||||
// Example:
|
||||
// handler, err := handlers.NewAccessHandler("data/app.db", appLogger)
|
||||
// handler, err := NewAccessHandler("data/app.db", appLogger)
|
||||
// if err != nil {
|
||||
// log.Fatal(err)
|
||||
// }
|
||||
//
|
||||
func NewAccessHandler(dbPath string, logger *logging.Logger) (aH *AccessHandler, err error) {
|
||||
func NewAccessHandler(path string, logger *logging.Logger) (aH *AccessHandler, err error) {
|
||||
if logger == nil {
|
||||
logger, err = logging.NewLogger("accessHandler.log", nil)
|
||||
if err != nil {
|
||||
@@ -65,7 +65,7 @@ func NewAccessHandler(dbPath string, logger *logging.Logger) (aH *AccessHandler,
|
||||
|
||||
logger.Debug("NewAccessHandler", "initialize db handler")
|
||||
// Create a new DB handler instance
|
||||
aH.dbHandler, err = NewDBHandler(dbPath, logger)
|
||||
aH.dbHandler, err = NewDBHandler(path, logger)
|
||||
if err != nil {
|
||||
aH.logger.Error("NewAccessHandler", err)
|
||||
return
|
||||
@@ -1,8 +1,9 @@
|
||||
package handlers
|
||||
package AccessHandler
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"path/filepath"
|
||||
"reflect"
|
||||
"strings"
|
||||
|
||||
@@ -43,8 +44,9 @@ type DBHandler struct {
|
||||
// Returns:
|
||||
// - dH: A pointer to the initialized `DBHandler`.
|
||||
// - err: Any error encountered during database connection.
|
||||
func NewDBHandler(dbPath string, logger *logging.Logger) (dH *DBHandler, err error) {
|
||||
func NewDBHandler(path string, logger *logging.Logger) (dH *DBHandler, err error) {
|
||||
dH = &DBHandler{logger: logger}
|
||||
dbPath := filepath.Join(path, "user.db")
|
||||
logger.Debug("NewDBHandler", "open database "+dbPath)
|
||||
dH.db, err = gorm.Open(sqlite.Open(dbPath), &gorm.Config{})
|
||||
return
|
||||
13
db_test.go
13
db_test.go
@@ -1,4 +1,4 @@
|
||||
package accessmanager_test
|
||||
package AccessHandler
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
@@ -7,8 +7,7 @@ import (
|
||||
"net/http/httptest"
|
||||
"testing"
|
||||
|
||||
"gitea.tecamino.com/paadi/AccessHandler/handlers"
|
||||
"gitea.tecamino.com/paadi/AccessHandler/models"
|
||||
"gitea.tecamino.com/paadi/access-handler/models"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/go-playground/assert/v2"
|
||||
@@ -18,7 +17,7 @@ func TestAccesshandlerLogin(t *testing.T) {
|
||||
t.Log("start access handler test")
|
||||
|
||||
t.Log("initialize accessHandler")
|
||||
accessHandler, err := handlers.NewAccessHandler("test.db", nil)
|
||||
accessHandler, err := NewAccessHandler(".", nil)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@@ -100,20 +99,20 @@ func TestLoginHandler(t *testing.T) {
|
||||
gin.SetMode(gin.TestMode)
|
||||
|
||||
// Setup your AccessHandler and router
|
||||
aH, err := handlers.NewAccessHandler("test.db", nil)
|
||||
aH, err := NewAccessHandler(".", nil)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
r := gin.Default()
|
||||
|
||||
handlers.SetMiddlewareLogger(r, aH.GetLogger())
|
||||
SetMiddlewareLogger(r, aH.GetLogger())
|
||||
|
||||
r.POST("/login", aH.Login)
|
||||
r.POST("/login/refresh", aH.Refresh)
|
||||
r.GET("/login/me", aH.Me)
|
||||
r.GET("/logout", aH.Logout)
|
||||
middleware := r.Group("", handlers.AuthMiddleware())
|
||||
middleware := r.Group("", AuthMiddleware())
|
||||
|
||||
auth := middleware.Group("/members", aH.AuthorizeRole(""))
|
||||
auth.GET("", func(ctx *gin.Context) {
|
||||
|
||||
2
go.mod
2
go.mod
@@ -1,4 +1,4 @@
|
||||
module gitea.tecamino.com/paadi/AccessHandler
|
||||
module gitea.tecamino.com/paadi/access-handler
|
||||
|
||||
go 1.24.5
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package handlers
|
||||
package AccessHandler
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
@@ -6,8 +6,8 @@ import (
|
||||
"net/http"
|
||||
"time"
|
||||
|
||||
"gitea.tecamino.com/paadi/AccessHandler/models"
|
||||
"gitea.tecamino.com/paadi/AccessHandler/utils"
|
||||
"gitea.tecamino.com/paadi/access-handler/models"
|
||||
"gitea.tecamino.com/paadi/access-handler/utils"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/golang-jwt/jwt/v5"
|
||||
@@ -1,4 +1,4 @@
|
||||
package handlers
|
||||
package AccessHandler
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
@@ -27,7 +27,7 @@ import (
|
||||
//
|
||||
// Usage:
|
||||
//
|
||||
// handlers.SetMiddlewareLogger(router, logger)
|
||||
// SetMiddlewareLogger(router, logger)
|
||||
func SetMiddlewareLogger(r *gin.Engine, logger *logging.Logger) {
|
||||
// Add middleware that injects logger into context
|
||||
r.Use(func(c *gin.Context) {
|
||||
@@ -55,7 +55,7 @@ func SetMiddlewareLogger(r *gin.Engine, logger *logging.Logger) {
|
||||
//
|
||||
// Usage:
|
||||
//
|
||||
// r.Use(handlers.AuthMiddleware())
|
||||
// r.Use(AuthMiddleware())
|
||||
func AuthMiddleware() gin.HandlerFunc {
|
||||
return func(c *gin.Context) {
|
||||
// Retrieve logger from Gin context
|
||||
@@ -1,9 +1,9 @@
|
||||
package handlers
|
||||
package AccessHandler
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"gitea.tecamino.com/paadi/AccessHandler/models"
|
||||
"gitea.tecamino.com/paadi/access-handler/models"
|
||||
)
|
||||
|
||||
// AddRoleTable
|
||||
@@ -1,10 +1,10 @@
|
||||
package handlers
|
||||
package AccessHandler
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"gitea.tecamino.com/paadi/AccessHandler/models"
|
||||
"gitea.tecamino.com/paadi/AccessHandler/utils"
|
||||
"gitea.tecamino.com/paadi/access-handler/models"
|
||||
"gitea.tecamino.com/paadi/access-handler/utils"
|
||||
)
|
||||
|
||||
// AddUserTable
|
||||
Reference in New Issue
Block a user