4 Commits

Author SHA1 Message Date
Adrian Zürcher
a797700685 change db to fixed name and path is definable 2025-10-24 11:01:52 +02:00
Adrian Zürcher
d7890f747b change repo name 2025-10-24 10:51:25 +02:00
Adrian Zürcher
e469b61bb2 move handlers to root folder 2025-10-24 10:43:59 +02:00
Adrian Zürcher
42c4f1d915 move handlers to root folder 2025-10-24 10:42:31 +02:00
10 changed files with 37 additions and 37 deletions

3
.gitignore vendored
View File

@@ -1 +1,2 @@
*.log *.log
*.db

View File

@@ -21,13 +21,12 @@ It provides ready-to-use user authentication (login, refresh, logout, user info)
``` ```
AccessHandler/ AccessHandler/
├── handlers/ ├── access_handler.go # AccessHandler initialization
│ ├── access_handler.go # AccessHandler initialization ├── db_handler.go # Database handler using GORM
│ ├── db_handler.go # Database handler using GORM ├── login.go # Login, Refresh, Me, Logout handlers
│ ├── login.go # Login, Refresh, Me, Logout handlers ├── middleware.go # middleware authentification
│ ├── middleware.go # middleware authentification ├── role.go # database handling for roles
| ├── role.go # database handling for roles ├── user.go # database users for roles
| ├── user.go # database users for roles
| |
├── models/ ├── models/
│ ├── jsonResponse.go # Json responses model │ ├── jsonResponse.go # Json responses model
@@ -79,7 +78,7 @@ go get https://gitea.tecamino.com/paadi/tecamino-logger/logging
## 🔑 Authentication Constants ## 🔑 Authentication Constants
In `handlers/login.go`: In `login.go`:
```go ```go
// ----------------------------- // -----------------------------
@@ -119,7 +118,6 @@ var REFRESH_SECRET = []byte("*")
package main package main
import ( import (
"AccessHandler/handlers"
"gitea.tecamino.com/paadi/tecamino-logger/logging" "gitea.tecamino.com/paadi/tecamino-logger/logging"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
"log" "log"
@@ -127,7 +125,7 @@ import (
func main() { func main() {
logger, _ := logging.NewLogger("server.log", nil) logger, _ := logging.NewLogger("server.log", nil)
accessHandler, err := handlers.NewAccessHandler("access.db", logger) accessHandler, err := NewAccessHandler("access.db", logger)
if err != nil { if err != nil {
log.Fatal(err) log.Fatal(err)
} }

View File

@@ -1,4 +1,4 @@
package handlers package AccessHandler
import "gitea.tecamino.com/paadi/tecamino-logger/logging" import "gitea.tecamino.com/paadi/tecamino-logger/logging"
@@ -35,7 +35,7 @@ type AccessHandler struct {
// - Default role(s) // - Default role(s)
// //
// Parameters: // 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. // - logger: Optional pointer to a logging.Logger instance. If nil, a new one is created.
// //
// Returns: // Returns:
@@ -43,12 +43,12 @@ type AccessHandler struct {
// - err: Any error that occurs during initialization. // - err: Any error that occurs during initialization.
// //
// Example: // Example:
// handler, err := handlers.NewAccessHandler("data/app.db", appLogger) // handler, err := NewAccessHandler("data/app.db", appLogger)
// if err != nil { // if err != nil {
// log.Fatal(err) // 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 { if logger == nil {
logger, err = logging.NewLogger("accessHandler.log", nil) logger, err = logging.NewLogger("accessHandler.log", nil)
if err != nil { if err != nil {
@@ -65,7 +65,7 @@ func NewAccessHandler(dbPath string, logger *logging.Logger) (aH *AccessHandler,
logger.Debug("NewAccessHandler", "initialize db handler") logger.Debug("NewAccessHandler", "initialize db handler")
// Create a new DB handler instance // Create a new DB handler instance
aH.dbHandler, err = NewDBHandler(dbPath, logger) aH.dbHandler, err = NewDBHandler(path, logger)
if err != nil { if err != nil {
aH.logger.Error("NewAccessHandler", err) aH.logger.Error("NewAccessHandler", err)
return return

View File

@@ -1,8 +1,9 @@
package handlers package AccessHandler
import ( import (
"errors" "errors"
"fmt" "fmt"
"path/filepath"
"reflect" "reflect"
"strings" "strings"
@@ -43,8 +44,9 @@ type DBHandler struct {
// Returns: // Returns:
// - dH: A pointer to the initialized `DBHandler`. // - dH: A pointer to the initialized `DBHandler`.
// - err: Any error encountered during database connection. // - 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} dH = &DBHandler{logger: logger}
dbPath := filepath.Join(path, "user.db")
logger.Debug("NewDBHandler", "open database "+dbPath) logger.Debug("NewDBHandler", "open database "+dbPath)
dH.db, err = gorm.Open(sqlite.Open(dbPath), &gorm.Config{}) dH.db, err = gorm.Open(sqlite.Open(dbPath), &gorm.Config{})
return return

View File

@@ -1,4 +1,4 @@
package accessmanager_test package AccessHandler
import ( import (
"bytes" "bytes"
@@ -7,8 +7,7 @@ import (
"net/http/httptest" "net/http/httptest"
"testing" "testing"
"gitea.tecamino.com/paadi/AccessHandler/handlers" "gitea.tecamino.com/paadi/access-handler/models"
"gitea.tecamino.com/paadi/AccessHandler/models"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
"github.com/go-playground/assert/v2" "github.com/go-playground/assert/v2"
@@ -18,7 +17,7 @@ func TestAccesshandlerLogin(t *testing.T) {
t.Log("start access handler test") t.Log("start access handler test")
t.Log("initialize accessHandler") t.Log("initialize accessHandler")
accessHandler, err := handlers.NewAccessHandler("test.db", nil) accessHandler, err := NewAccessHandler(".", nil)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@@ -100,20 +99,20 @@ func TestLoginHandler(t *testing.T) {
gin.SetMode(gin.TestMode) gin.SetMode(gin.TestMode)
// Setup your AccessHandler and router // Setup your AccessHandler and router
aH, err := handlers.NewAccessHandler("test.db", nil) aH, err := NewAccessHandler(".", nil)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
r := gin.Default() r := gin.Default()
handlers.SetMiddlewareLogger(r, aH.GetLogger()) SetMiddlewareLogger(r, aH.GetLogger())
r.POST("/login", aH.Login) r.POST("/login", aH.Login)
r.POST("/login/refresh", aH.Refresh) r.POST("/login/refresh", aH.Refresh)
r.GET("/login/me", aH.Me) r.GET("/login/me", aH.Me)
r.GET("/logout", aH.Logout) r.GET("/logout", aH.Logout)
middleware := r.Group("", handlers.AuthMiddleware()) middleware := r.Group("", AuthMiddleware())
auth := middleware.Group("/members", aH.AuthorizeRole("")) auth := middleware.Group("/members", aH.AuthorizeRole(""))
auth.GET("", func(ctx *gin.Context) { auth.GET("", func(ctx *gin.Context) {

2
go.mod
View File

@@ -1,4 +1,4 @@
module gitea.tecamino.com/paadi/AccessHandler module gitea.tecamino.com/paadi/access-handler
go 1.24.5 go 1.24.5

View File

@@ -1,4 +1,4 @@
package handlers package AccessHandler
import ( import (
"fmt" "fmt"
@@ -6,8 +6,8 @@ import (
"net/http" "net/http"
"time" "time"
"gitea.tecamino.com/paadi/AccessHandler/models" "gitea.tecamino.com/paadi/access-handler/models"
"gitea.tecamino.com/paadi/AccessHandler/utils" "gitea.tecamino.com/paadi/access-handler/utils"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
"github.com/golang-jwt/jwt/v5" "github.com/golang-jwt/jwt/v5"

View File

@@ -1,4 +1,4 @@
package handlers package AccessHandler
import ( import (
"fmt" "fmt"
@@ -27,7 +27,7 @@ import (
// //
// Usage: // Usage:
// //
// handlers.SetMiddlewareLogger(router, logger) // SetMiddlewareLogger(router, logger)
func SetMiddlewareLogger(r *gin.Engine, logger *logging.Logger) { func SetMiddlewareLogger(r *gin.Engine, logger *logging.Logger) {
// Add middleware that injects logger into context // Add middleware that injects logger into context
r.Use(func(c *gin.Context) { r.Use(func(c *gin.Context) {
@@ -55,7 +55,7 @@ func SetMiddlewareLogger(r *gin.Engine, logger *logging.Logger) {
// //
// Usage: // Usage:
// //
// r.Use(handlers.AuthMiddleware()) // r.Use(AuthMiddleware())
func AuthMiddleware() gin.HandlerFunc { func AuthMiddleware() gin.HandlerFunc {
return func(c *gin.Context) { return func(c *gin.Context) {
// Retrieve logger from Gin context // Retrieve logger from Gin context

View File

@@ -1,9 +1,9 @@
package handlers package AccessHandler
import ( import (
"fmt" "fmt"
"gitea.tecamino.com/paadi/AccessHandler/models" "gitea.tecamino.com/paadi/access-handler/models"
) )
// AddRoleTable // AddRoleTable

View File

@@ -1,10 +1,10 @@
package handlers package AccessHandler
import ( import (
"fmt" "fmt"
"gitea.tecamino.com/paadi/AccessHandler/models" "gitea.tecamino.com/paadi/access-handler/models"
"gitea.tecamino.com/paadi/AccessHandler/utils" "gitea.tecamino.com/paadi/access-handler/utils"
) )
// AddUserTable // AddUserTable