WIP: started adding auth

This commit is contained in:
ACoolName 2024-04-29 07:54:26 +03:00
parent 02c85fcf28
commit 7905062cdc
4 changed files with 51 additions and 25 deletions

47
auth/auth.go Normal file
View File

@ -0,0 +1,47 @@
package auth
import (
"context"
"net/http"
"github.com/gin-gonic/gin"
"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/mongo"
)
type Permission int
const (
Start Permission = 1 << iota
Stop
Browse
Create
Delete
RunCommand
Admin
)
type User struct {
Username string `json:"username"`
Email string `json:"email"`
MaxOwnedServers int `json:"maxed_owned_servers"`
Permissions []string `json:"permissions"`
HashedPass string `json:"HashedPass"`
}
type Connection struct {
connection *mongo.Client
}
func (con Connection) AuthorizedTo(requiredPermissions Permission) gin.HandlerFunc {
return func(ctx *gin.Context) {
authCookie, err := ctx.Request.Cookie("auth")
if err != nil {
ctx http.Response{
Status: "403",
Body: "Authorization Required",
}
}
con.connection.Database("Backend").Collection("users").Find(context.TODO(), bson.D{})
}
}

3
auth/go.mod Normal file
View File

@ -0,0 +1,3 @@
module acooldomain.co/backend/auth
go 1.22.0

View File

@ -4,4 +4,5 @@ use (
. .
./users ./users
./db_handler ./db_handler
./auth
) )

View File

@ -1,7 +1,6 @@
package users package users
import ( import (
"container/list"
"context" "context"
"net/http" "net/http"
@ -33,30 +32,6 @@ type Connection struct {
connection *mongo.Client connection *mongo.Client
} }
func TranslatePermission(permission Permission, permissions_list *list.List) {
if Start&permission == Start {
permissions_list.PushFront("start")
}
if Stop&permission == Stop {
permissions_list.PushFront("stop")
}
if Browse&permission == Browse {
permissions_list.PushFront("browse")
}
if Create&permission == Create {
permissions_list.PushFront("create")
}
if Delete&permission == Delete {
permissions_list.PushFront("delete")
}
if RunCommand&permission == RunCommand {
permissions_list.PushFront("runcommand")
}
if Admin&permission == Admin {
permissions_list.PushFront("admin")
}
}
func (con Connection) GetUsers(c *gin.Context) { func (con Connection) GetUsers(c *gin.Context) {
users, err := con.connection.Database("Backend").Collection("Users").Find(context.TODO(), bson.D{}) users, err := con.connection.Database("Backend").Collection("Users").Find(context.TODO(), bson.D{})
if err != nil { if err != nil {