This commit is contained in:
2025-11-03 12:24:01 +02:00
commit 0806865287
177 changed files with 18453 additions and 0 deletions

View File

@@ -0,0 +1,81 @@
package handlers
import (
"net/http"
"go-server/internal/service"
"github.com/gin-gonic/gin"
"github.com/google/uuid"
)
type AdminController struct {
service *service.UserService
}
func NewAdminController(service *service.UserService) *AdminController {
return &AdminController{service}
}
func (uc *AdminController) GetUserByID(c *gin.Context) {
id := uuid.MustParse(c.Param("id"))
user, err := uc.service.GetByID(c, id)
if err != nil {
c.JSON(http.StatusNotFound, gin.H{"error": "User not found"})
return
}
c.JSON(http.StatusOK, user)
}
func (uc *AdminController) GetUsers(c *gin.Context) {
users, err := uc.service.GetAll(c)
if err != nil {
c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
return
}
c.JSON(http.StatusOK, users)
}
func (uc *AdminController) CreateUser(c *gin.Context) {
var input service.CreateUserInput
if err := c.ShouldBindJSON(&input); err != nil {
c.JSON(http.StatusBadRequest, gin.H{"error": "Invalid request"})
return
}
user, err := uc.service.Create(c, input)
if err != nil {
c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
return
}
c.JSON(http.StatusCreated, user)
}
func (uc *AdminController) DeleteUser(c *gin.Context) {
id := uuid.MustParse(c.Param("id"))
err := uc.service.Delete(c, id)
if err != nil {
c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
return
}
c.JSON(http.StatusOK, gin.H{"message": "User deleted successfully"})
}
func (uc *AdminController) ChangePassword(c *gin.Context) {
id := uuid.MustParse(c.Param("id"))
var input service.ChangePasswordInput
if err := c.ShouldBindJSON(&input); err != nil {
c.JSON(http.StatusBadRequest, gin.H{"error": "Invalid request"})
return
}
err := uc.service.ChangePassword(c, id, input)
if err != nil {
c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
return
}
c.JSON(http.StatusOK, gin.H{"message": "Password changed successfully"})
}