Reorganization of backend + new routes
This commit is contained in:
61
backend/api/users/add_role.go
Normal file
61
backend/api/users/add_role.go
Normal file
@@ -0,0 +1,61 @@
|
||||
package users
|
||||
|
||||
import (
|
||||
"context"
|
||||
"net/http"
|
||||
|
||||
core "fr.latosa-escrima/core"
|
||||
"fr.latosa-escrima/core/models"
|
||||
"github.com/google/uuid"
|
||||
)
|
||||
|
||||
func HandleAddRole(w http.ResponseWriter, r *http.Request) {
|
||||
ctx := context.Background()
|
||||
user_id := r.PathValue("user_uuid")
|
||||
role_id := r.PathValue("role_id")
|
||||
var user models.User
|
||||
count, err := core.DB.NewSelect().Model(&user).
|
||||
Where("user_id = ?", user_id).
|
||||
Limit(1).ScanAndCount(ctx)
|
||||
if count == 0 {
|
||||
core.JSONError{
|
||||
Status: core.Error,
|
||||
Message: "User doesn't exist.",
|
||||
}.Respond(w, http.StatusNotFound)
|
||||
return
|
||||
}
|
||||
|
||||
var role models.Role
|
||||
count, err = core.DB.NewSelect().Model(&role).
|
||||
Where("id = ?", role_id).
|
||||
Limit(1).ScanAndCount(ctx)
|
||||
|
||||
if count == 0 {
|
||||
core.JSONError{
|
||||
Status: core.Error,
|
||||
Message: "Role doesn't exist.",
|
||||
}.Respond(w, http.StatusNotFound)
|
||||
return
|
||||
}
|
||||
|
||||
uid, err := uuid.Parse(user_id)
|
||||
rid, err := uuid.Parse(role_id)
|
||||
userRole := models.UserToRole{
|
||||
UserID: uid,
|
||||
RoleID: rid,
|
||||
}
|
||||
_, err = core.DB.NewInsert().Model(&userRole).Ignore().
|
||||
Exec(ctx)
|
||||
if err != nil {
|
||||
core.JSONError{
|
||||
Status: core.Error,
|
||||
Message: err.Error(),
|
||||
}.Respond(w, http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
|
||||
core.JSONSuccess{
|
||||
Status: core.Success,
|
||||
Message: "Role added.",
|
||||
}.Respond(w, http.StatusCreated)
|
||||
}
|
||||
@@ -8,7 +8,8 @@ import (
|
||||
"net/http"
|
||||
"time"
|
||||
|
||||
core "fr.latosa-escrima/api/core"
|
||||
core "fr.latosa-escrima/core"
|
||||
"fr.latosa-escrima/core/models"
|
||||
"github.com/golang-jwt/jwt/v5"
|
||||
)
|
||||
|
||||
@@ -52,7 +53,7 @@ func HandleLogin(w http.ResponseWriter, r *http.Request) {
|
||||
return
|
||||
}
|
||||
|
||||
user, err := core.Verify(context.Background(), login.Email, login.Password)
|
||||
user, err := models.Verify(core.DB, context.Background(), login.Email, login.Password)
|
||||
if user == nil {
|
||||
core.JSONError{
|
||||
Status: core.Error,
|
||||
|
||||
@@ -4,13 +4,14 @@ import (
|
||||
"context"
|
||||
"net/http"
|
||||
|
||||
"fr.latosa-escrima/api/core"
|
||||
"fr.latosa-escrima/core"
|
||||
"fr.latosa-escrima/core/models"
|
||||
)
|
||||
|
||||
func HandleDelete(w http.ResponseWriter, r *http.Request) {
|
||||
uuid := r.PathValue("user_uuid")
|
||||
_, err := core.DB.NewDelete().
|
||||
Model((*core.User)(nil)).
|
||||
Model((*models.User)(nil)).
|
||||
Where("user_id = ?", uuid).
|
||||
Exec(context.Background())
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ package users
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
"fr.latosa-escrima/api/core"
|
||||
"fr.latosa-escrima/core"
|
||||
"github.com/golang-jwt/jwt/v5"
|
||||
)
|
||||
|
||||
|
||||
@@ -6,11 +6,12 @@ import (
|
||||
"log"
|
||||
"net/http"
|
||||
|
||||
core "fr.latosa-escrima/api/core"
|
||||
core "fr.latosa-escrima/core"
|
||||
"fr.latosa-escrima/core/models"
|
||||
)
|
||||
|
||||
func HandleNew(w http.ResponseWriter, r *http.Request) {
|
||||
var user core.User
|
||||
var user models.User
|
||||
err := json.NewDecoder(r.Body).Decode(&user)
|
||||
if err != nil {
|
||||
core.JSONError{
|
||||
@@ -21,7 +22,7 @@ func HandleNew(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
log.Println("User : ", user)
|
||||
|
||||
res, err := user.Insert(context.Background())
|
||||
res, err := user.Insert(core.DB, context.Background())
|
||||
log.Println(res)
|
||||
// if res == nil {
|
||||
// core.JSONError{
|
||||
|
||||
32
backend/api/users/remove_role.go
Normal file
32
backend/api/users/remove_role.go
Normal file
@@ -0,0 +1,32 @@
|
||||
package users
|
||||
|
||||
import (
|
||||
"context"
|
||||
"net/http"
|
||||
|
||||
"fr.latosa-escrima/core"
|
||||
"fr.latosa-escrima/core/models"
|
||||
)
|
||||
|
||||
func HandleRemoveRole(w http.ResponseWriter, r *http.Request) {
|
||||
ctx := context.Background()
|
||||
user_id := r.PathValue("user_uuid")
|
||||
role_id := r.PathValue("role_id")
|
||||
|
||||
_, err := core.DB.NewDelete().Model((*models.UserToRole)(nil)).
|
||||
Where("user_id = ? AND role_id = ?", user_id, role_id).
|
||||
Exec(ctx)
|
||||
|
||||
if err != nil {
|
||||
core.JSONError{
|
||||
Status: core.Error,
|
||||
Message: err.Error(),
|
||||
}.Respond(w, http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
|
||||
core.JSONSuccess{
|
||||
Status: core.Success,
|
||||
Message: "Role removed.",
|
||||
}.Respond(w, http.StatusOK)
|
||||
}
|
||||
31
backend/api/users/roles.go
Normal file
31
backend/api/users/roles.go
Normal file
@@ -0,0 +1,31 @@
|
||||
package users
|
||||
|
||||
import (
|
||||
"context"
|
||||
"net/http"
|
||||
|
||||
"fr.latosa-escrima/core"
|
||||
"fr.latosa-escrima/core/models"
|
||||
)
|
||||
|
||||
func HandleRoles(w http.ResponseWriter, r *http.Request) {
|
||||
user_id := r.PathValue("user_uuid")
|
||||
var user models.User
|
||||
err := core.DB.NewSelect().Model(&user).Where("user_id = ?", user_id).
|
||||
Relation("Roles").
|
||||
Limit(1).
|
||||
Scan(context.Background())
|
||||
if err != nil {
|
||||
core.JSONError{
|
||||
Status: core.Error,
|
||||
Message: err.Error(),
|
||||
}.Respond(w, http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
|
||||
core.JSONSuccess{
|
||||
Status: core.Success,
|
||||
Message: "Roles found.",
|
||||
Data: user.Roles,
|
||||
}.Respond(w, http.StatusOK)
|
||||
}
|
||||
@@ -9,16 +9,17 @@ import (
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"fr.latosa-escrima/api/core"
|
||||
"fr.latosa-escrima/core"
|
||||
"fr.latosa-escrima/core/models"
|
||||
)
|
||||
|
||||
type UpdateUserArgs struct {
|
||||
FirstName *string `json:"firstname,omitempty"`
|
||||
LastName *string `json:"lastname,omitempty"`
|
||||
Email *string `json:"email,omitempty"`
|
||||
Password *string `json:"password,omitempty"`
|
||||
Phone *string `json:"phone,omitempty"`
|
||||
Attributes *core.UserAttributes `json:"attributes"`
|
||||
FirstName *string `json:"firstname,omitempty"`
|
||||
LastName *string `json:"lastname,omitempty"`
|
||||
Email *string `json:"email,omitempty"`
|
||||
Password *string `json:"password,omitempty"`
|
||||
Phone *string `json:"phone,omitempty"`
|
||||
Attributes *models.UserAttributes `json:"attributes"`
|
||||
}
|
||||
|
||||
func HandleUpdate(w http.ResponseWriter, r *http.Request) {
|
||||
@@ -32,7 +33,7 @@ func HandleUpdate(w http.ResponseWriter, r *http.Request) {
|
||||
return
|
||||
}
|
||||
|
||||
var user core.User
|
||||
var user models.User
|
||||
updateQuery := core.DB.NewUpdate().Model(&user)
|
||||
|
||||
val := reflect.ValueOf(updateArgs)
|
||||
|
||||
@@ -4,15 +4,17 @@ import (
|
||||
"context"
|
||||
"net/http"
|
||||
|
||||
"fr.latosa-escrima/api/core"
|
||||
"fr.latosa-escrima/core"
|
||||
"fr.latosa-escrima/core/models"
|
||||
)
|
||||
|
||||
func HandleUser(w http.ResponseWriter, r *http.Request) {
|
||||
uuid := r.PathValue("user_uuid")
|
||||
var user core.User
|
||||
var user models.User
|
||||
count, err := core.DB.NewSelect().
|
||||
Model(&user).
|
||||
Where("user_id = ?", uuid).
|
||||
Relation("Roles").
|
||||
Limit(1).
|
||||
ScanAndCount(context.Background())
|
||||
|
||||
|
||||
@@ -4,17 +4,19 @@ import (
|
||||
"context"
|
||||
"net/http"
|
||||
|
||||
"fr.latosa-escrima/api/core"
|
||||
"fr.latosa-escrima/core"
|
||||
"fr.latosa-escrima/core/models"
|
||||
"fr.latosa-escrima/utils"
|
||||
)
|
||||
|
||||
func HandleUsers(w http.ResponseWriter, r *http.Request) {
|
||||
var users []core.User
|
||||
var users []models.User
|
||||
count, err := core.DB.NewSelect().
|
||||
Model(&users).
|
||||
Relation("Roles").
|
||||
ScanAndCount(context.Background())
|
||||
|
||||
users = utils.Map(users, func(user core.User) core.User {
|
||||
users = utils.Map(users, func(user models.User) models.User {
|
||||
user.Password = ""
|
||||
return user
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user