From 46675c7b2f57d243a04502a711c9bf509f17c08a Mon Sep 17 00:00:00 2001 From: ACoolName Date: Sat, 18 May 2024 21:43:25 +0300 Subject: [PATCH] fixed signup --- auth/auth.go | 47 +++++++++++++++++++++++++++++++++++++++-------- users/users.go | 4 ++-- 2 files changed, 41 insertions(+), 10 deletions(-) diff --git a/auth/auth.go b/auth/auth.go index d59dbb8..22d0b40 100644 --- a/auth/auth.go +++ b/auth/auth.go @@ -12,6 +12,7 @@ import ( "github.com/golang-jwt/jwt" "go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/mongo" + "go.mongodb.org/mongo-driver/mongo/options" "golang.org/x/crypto/bcrypt" ) @@ -33,9 +34,9 @@ type AuthClaims struct { } type InviteToken struct { - Email string `bson:"Email"` - Permissions []models.Permission `bson:"Permissions"` - Token string `bson:"Token"` + Email string `bson:"Email"` + Permissions models.Permission `bson:"Permissions"` + Token string `bson:"Token"` } func signToken(token TokenInfo) (string, error) { @@ -102,20 +103,50 @@ type SignUpRequest struct { } func (con Connection) signUp(c *gin.Context) { - var token TokenInfo + var request SignUpRequest - err := json.NewDecoder(c.Request.Body).Decode(&token) + err := json.NewDecoder(c.Request.Body).Decode(&request) if err != nil { c.AbortWithError(500, err) } - signedToken, err := signToken(token) + var token InviteToken + + err = con.connection.Database("Backend").Collection("Tokens").FindOne( + context.TODO(), + bson.D{{}}, + options.FindOne(), + ).Decode(&token) + if err != nil { c.AbortWithError(500, err) + return + } + if token.Token == "" { + c.AbortWithStatusJSON(403, "PermissionDenied") + return } - c.SetCookie("auth", signedToken, -1, "", "", false, false) - c.IndentedJSON(http.StatusOK, signedToken) + hashedPass, err := hashPassword(request.Password) + if err != nil { + c.AbortWithError(500, err) + return + } + + _, err = con.connection.Database("Backend").Collection("Users").InsertOne(context.TODO(), &models.User{ + Username: request.Username, + HashedPass: hashedPass, + Permissions: token.Permissions, + MaxOwnedServers: 5, + Email: token.Email, + }, &options.InsertOneOptions{}) + + if err != nil { + c.AbortWithError(500, err) + return + } + + con.signIn(c) } type SignInRequest struct { diff --git a/users/users.go b/users/users.go index cd50d80..922ec14 100644 --- a/users/users.go +++ b/users/users.go @@ -35,8 +35,8 @@ func (con Connection) GetUsers(c *gin.Context) { } type InviteUser struct { - Email string `json:"Email"` - Permissions []models.Permission `json:"Permissions"` + Email string `json:"Email"` + Permissions models.Permission `json:"Permissions"` } func (con Connection) InviteUser(c *gin.Context) {