82 lines
1.9 KiB
Go
82 lines
1.9 KiB
Go
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"})
|
|
}
|