diff --git a/.gitignore b/.gitignore index d3272c2..2868c48 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,8 @@ api\ tests.txt ccsecrets ccsecrets.* +smt +smt.* .env *.pem .DS_Store \ No newline at end of file diff --git a/middlewares/middlewares.go b/middlewares/middlewares.go index 7537c4a..dc50bf8 100644 --- a/middlewares/middlewares.go +++ b/middlewares/middlewares.go @@ -14,6 +14,7 @@ func JwtAuthMiddleware() gin.HandlerFunc { return func(c *gin.Context) { err := token.TokenValid(c) if err != nil { + log.Printf("JwtAuthMiddleware token is not valid : '%s'\n", err) c.String(http.StatusUnauthorized, "Unauthorized") c.Abort() return @@ -25,10 +26,9 @@ func JwtAuthMiddleware() gin.HandlerFunc { func JwtAuthAdminMiddleware() gin.HandlerFunc { return func(c *gin.Context) { - // TODO - also verify user role of admin - err := token.TokenValid(c) if err != nil { + log.Printf("JwtAuthAdminMiddleware token is not valid : '%s'\n", err) c.String(http.StatusUnauthorized, "Unauthorized") c.Abort() return @@ -38,6 +38,7 @@ func JwtAuthAdminMiddleware() gin.HandlerFunc { user_id, err := token.ExtractTokenID(c) if err != nil { + log.Printf("JwtAuthAdminMiddleware could not extract user ID from context : '%s'\n", err) c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()}) c.Abort() return @@ -52,6 +53,7 @@ func JwtAuthAdminMiddleware() gin.HandlerFunc { } log.Printf("JwtAuthAdminMiddleware retrieved UserRole object '%v'\n", ur) + // Verify that the user has a role with the admin flag set if !ur.Admin { c.String(http.StatusUnauthorized, "User role is Non-Admin") c.Abort() diff --git a/models/user.go b/models/user.go index 9bd63fd..648fe95 100644 --- a/models/user.go +++ b/models/user.go @@ -29,16 +29,21 @@ func (u *User) SaveUser() (*User, error) { var err error // TODO - validate username not already in use - - result, err := db.NamedExec((`INSERT INTO users (RoleId, UserName, Password) VALUES (:RoleId, :UserName, :Password)`), u) - + _, err = GetUserByName(u.UserName) if err != nil { - log.Printf("SaveUser error executing sql record : '%s'\n", err) - return &User{}, err + log.Printf("SaveUser Username already exists : '%v'\n", err) } else { - affected, _ := result.RowsAffected() - id, _ := result.LastInsertId() - log.Printf("SaveUser insert returned result id '%d' affecting %d row(s).\n", id, affected) + log.Printf("SaveUser confirmed no existing user, continuing with creation of user '%s'\n", u.UserName) + result, err := db.NamedExec((`INSERT INTO users (RoleId, UserName, Password) VALUES (:RoleId, :UserName, :Password)`), u) + + if err != nil { + log.Printf("SaveUser error executing sql record : '%s'\n", err) + return &User{}, err + } else { + affected, _ := result.RowsAffected() + id, _ := result.LastInsertId() + log.Printf("SaveUser insert returned result id '%d' affecting %d row(s).\n", id, affected) + } } return u, nil