feat: add feature view all user registered(admin) and acces control
This commit is contained in:
parent
0e0aa3b1d1
commit
3ff8a22325
|
@ -17,23 +17,23 @@ func AppRouter(app *fiber.App) {
|
|||
// # user initial coint #
|
||||
api.Get("/user/initial-coint", controllers.GetUserInitialCoint)
|
||||
api.Get("/user/initial-coint/:id", controllers.GetUserInitialCointById)
|
||||
api.Post("/user/initial-coint", controllers.CreatePoint)
|
||||
api.Put("/user/initial-coint/:id", controllers.UpdatePoint)
|
||||
api.Delete("/user/initial-coint/:id", controllers.DeletePoint)
|
||||
api.Post("/user/initial-coint", middleware.RoleRequired(utils.RoleAdministrator), controllers.CreatePoint)
|
||||
api.Put("/user/initial-coint/:id", middleware.RoleRequired(utils.RoleAdministrator), controllers.UpdatePoint)
|
||||
api.Delete("/user/initial-coint/:id", middleware.RoleRequired(utils.RoleAdministrator), controllers.DeletePoint)
|
||||
|
||||
//# coverage area #
|
||||
api.Get("/coverage-areas", controllers.GetCoverageAreas)
|
||||
api.Get("/coverage-areas-district/:id", controllers.GetCoverageAreaByIDProvince)
|
||||
api.Get("/coverage-areas-subdistrict/:id", controllers.GetCoverageAreaByIDDistrict)
|
||||
api.Post("/coverage-areas", controllers.CreateCoverageArea)
|
||||
api.Post("/coverage-areas-district", controllers.CreateCoverageDistrict)
|
||||
api.Post("/coverage-areas-subdistrict", controllers.CreateCoverageSubdistrict)
|
||||
api.Put("/coverage-areas/:id", controllers.UpdateCoverageArea)
|
||||
api.Put("/coverage-areas-district/:id", controllers.UpdateCoverageDistrict)
|
||||
api.Put("/coverage-areas-subdistrict/:id", controllers.UpdateCoverageSubdistrict)
|
||||
api.Delete("/coverage-areas/:id", controllers.DeleteCoverageArea)
|
||||
api.Delete("/coverage-areas-district/:id", controllers.DeleteCoverageDistrict)
|
||||
api.Delete("/coverage-areas-subdistrict/:id", controllers.DeleteCoverageSubdistrict)
|
||||
api.Post("/coverage-areas", middleware.RoleRequired(utils.RoleAdministrator), controllers.CreateCoverageArea)
|
||||
api.Post("/coverage-areas-district", middleware.RoleRequired(utils.RoleAdministrator), controllers.CreateCoverageDistrict)
|
||||
api.Post("/coverage-areas-subdistrict", middleware.RoleRequired(utils.RoleAdministrator), controllers.CreateCoverageSubdistrict)
|
||||
api.Put("/coverage-areas/:id", middleware.RoleRequired(utils.RoleAdministrator), controllers.UpdateCoverageArea)
|
||||
api.Put("/coverage-areas-district/:id", middleware.RoleRequired(utils.RoleAdministrator), controllers.UpdateCoverageDistrict)
|
||||
api.Put("/coverage-areas-subdistrict/:id", middleware.RoleRequired(utils.RoleAdministrator), controllers.UpdateCoverageSubdistrict)
|
||||
api.Delete("/coverage-areas/:id", middleware.RoleRequired(utils.RoleAdministrator), controllers.DeleteCoverageArea)
|
||||
api.Delete("/coverage-areas-district/:id", middleware.RoleRequired(utils.RoleAdministrator), controllers.DeleteCoverageDistrict)
|
||||
api.Delete("/coverage-areas-subdistrict/:id", middleware.RoleRequired(utils.RoleAdministrator), controllers.DeleteCoverageSubdistrict)
|
||||
|
||||
// # role #
|
||||
api.Get("/roles", middleware.RoleRequired(utils.RoleAdministrator), controllers.GetAllUserRoles)
|
||||
|
@ -48,6 +48,11 @@ func AppRouter(app *fiber.App) {
|
|||
api.Post("/user/update-password", middleware.AuthMiddleware, controllers.UpdatePassword)
|
||||
api.Put("/user/update-user", middleware.AuthMiddleware, controllers.UpdateUser)
|
||||
|
||||
// # view all user (admin)
|
||||
api.Get("/user/listallusers", middleware.RoleRequired(utils.RoleAdministrator), controllers.GetListUsers)
|
||||
api.Get("/user/listalluser/:roleid", middleware.RoleRequired(utils.RoleAdministrator), controllers.GetUsersByRole)
|
||||
api.Get("/user/listuser/:userid", middleware.RoleRequired(utils.RoleAdministrator), controllers.GetUserByUserID)
|
||||
|
||||
// # user set pin #
|
||||
api.Get("/user/verif-pin", middleware.AuthMiddleware, controllers.GetPin)
|
||||
api.Get("/user/cek-pin-status", middleware.AuthMiddleware, controllers.GetPinStatus)
|
||||
|
@ -63,28 +68,28 @@ func AppRouter(app *fiber.App) {
|
|||
api.Delete("/address/delete-address/:id", middleware.AuthMiddleware, controllers.DeleteAddress)
|
||||
|
||||
// # article #
|
||||
api.Get("/articles", middleware.AuthMiddleware, controllers.GetArticles)
|
||||
api.Get("/article/:id", middleware.AuthMiddleware, controllers.GetArticleByID)
|
||||
api.Post("/article/create-article", middleware.AuthMiddleware, controllers.CreateArticle)
|
||||
api.Put("/article/update-article/:id", middleware.AuthMiddleware, controllers.UpdateArticle)
|
||||
api.Delete("/article/delete-article/:id", middleware.AuthMiddleware, controllers.DeleteArticle)
|
||||
api.Get("/articles", controllers.GetArticles)
|
||||
api.Get("/article/:id", controllers.GetArticleByID)
|
||||
api.Post("/article/create-article", middleware.RoleRequired(utils.RoleAdministrator), controllers.CreateArticle)
|
||||
api.Put("/article/update-article/:id", middleware.RoleRequired(utils.RoleAdministrator), controllers.UpdateArticle)
|
||||
api.Delete("/article/delete-article/:id", middleware.RoleRequired(utils.RoleAdministrator), controllers.DeleteArticle)
|
||||
|
||||
// # trash type #
|
||||
api.Get("/trash-categorys", controllers.GetTrashCategories)
|
||||
api.Get("/trash-category/:id", controllers.GetTrashCategoryDetail)
|
||||
api.Post("/trash-category/create-trash-category", controllers.CreateTrashCategory)
|
||||
api.Post("/trash-category/create-trash-categorydetail", controllers.CreateTrashDetail)
|
||||
api.Put("/trash-category/update-trash-category/:id", controllers.UpdateTrashCategory)
|
||||
api.Put("/trash-category/update-trash-detail/:id", controllers.UpdateTrashDetail)
|
||||
api.Delete("/trash-category/delete-trash-category/:id", controllers.DeleteTrashCategory)
|
||||
api.Delete("/trash-category/delete-trash-detail/:id", controllers.DeleteTrashDetail)
|
||||
api.Post("/trash-category/create-trash-category", middleware.RoleRequired(utils.RoleAdministrator), controllers.CreateTrashCategory)
|
||||
api.Post("/trash-category/create-trash-categorydetail", middleware.RoleRequired(utils.RoleAdministrator), controllers.CreateTrashDetail)
|
||||
api.Put("/trash-category/update-trash-category/:id", middleware.RoleRequired(utils.RoleAdministrator), controllers.UpdateTrashCategory)
|
||||
api.Put("/trash-category/update-trash-detail/:id", middleware.RoleRequired(utils.RoleAdministrator), controllers.UpdateTrashDetail)
|
||||
api.Delete("/trash-category/delete-trash-category/:id", middleware.RoleRequired(utils.RoleAdministrator), controllers.DeleteTrashCategory)
|
||||
api.Delete("/trash-category/delete-trash-detail/:id", middleware.RoleRequired(utils.RoleAdministrator), controllers.DeleteTrashDetail)
|
||||
|
||||
// # banner #
|
||||
api.Get("/banners", controllers.GetBanners)
|
||||
api.Get("/banner/:id", controllers.GetBannerByID)
|
||||
api.Post("/banner/create-banner", controllers.CreateBanner)
|
||||
api.Put("/banner/update-banner/:id", controllers.UpdateBanner)
|
||||
api.Delete("/banner/delete-banner/:id", controllers.DeleteBanner)
|
||||
api.Post("/banner/create-banner", middleware.RoleRequired(utils.RoleAdministrator), controllers.CreateBanner)
|
||||
api.Put("/banner/update-banner/:id", middleware.RoleRequired(utils.RoleAdministrator), controllers.UpdateBanner)
|
||||
api.Delete("/banner/delete-banner/:id", middleware.RoleRequired(utils.RoleAdministrator), controllers.DeleteBanner)
|
||||
|
||||
// # wilayah di indonesia #
|
||||
api.Get("/wilayah-indonesia/provinces", controllers.GetProvinces)
|
||||
|
@ -97,7 +102,7 @@ func AppRouter(app *fiber.App) {
|
|||
api.Get("/wilayah-indonesia/villages/:id", controllers.GetVillageByID)
|
||||
|
||||
// # request pickup by user (masyarakat) #
|
||||
api.Get("/requestpickup", middleware.AuthMiddleware, controllers.GetRequestPickupsByUser)
|
||||
api.Post("/addrequestpickup", middleware.AuthMiddleware, controllers.CreateRequestPickup)
|
||||
api.Delete("/deleterequestpickup/:id", middleware.AuthMiddleware, controllers.DeleteRequestPickup)
|
||||
api.Get("/requestpickup", middleware.RoleRequired(utils.RoleMasyarakat), controllers.GetRequestPickupsByUser)
|
||||
api.Post("/addrequestpickup", middleware.RoleRequired(utils.RoleMasyarakat), controllers.CreateRequestPickup)
|
||||
api.Delete("/deleterequestpickup/:id", middleware.RoleRequired(utils.RoleMasyarakat), controllers.DeleteRequestPickup)
|
||||
}
|
||||
|
|
|
@ -0,0 +1,75 @@
|
|||
package controllers
|
||||
|
||||
import (
|
||||
"github.com/gofiber/fiber/v2"
|
||||
"github.com/pahmiudahgede/senggoldong/dto"
|
||||
"github.com/pahmiudahgede/senggoldong/internal/services"
|
||||
"github.com/pahmiudahgede/senggoldong/utils"
|
||||
)
|
||||
|
||||
func GetListUsers(c *fiber.Ctx) error {
|
||||
users, err := services.GetUsers()
|
||||
if err != nil {
|
||||
return c.Status(fiber.StatusInternalServerError).JSON(utils.FormatResponse(
|
||||
fiber.StatusInternalServerError,
|
||||
"Failed to fetch users",
|
||||
nil,
|
||||
))
|
||||
}
|
||||
|
||||
return c.Status(fiber.StatusOK).JSON(utils.FormatResponse(
|
||||
fiber.StatusOK,
|
||||
"Users fetched successfully",
|
||||
users,
|
||||
))
|
||||
}
|
||||
|
||||
func GetUsersByRole(c *fiber.Ctx) error {
|
||||
roleID := c.Params("roleID")
|
||||
|
||||
users, err := services.GetUsersByRole(roleID)
|
||||
if err != nil {
|
||||
return c.Status(fiber.StatusInternalServerError).JSON(utils.FormatResponse(
|
||||
fiber.StatusInternalServerError,
|
||||
"Failed to fetch users by role",
|
||||
nil,
|
||||
))
|
||||
}
|
||||
|
||||
if len(users) == 0 {
|
||||
return c.Status(fiber.StatusNotFound).JSON(utils.FormatResponse(
|
||||
fiber.StatusNotFound,
|
||||
"No users found for the specified role",
|
||||
nil,
|
||||
))
|
||||
}
|
||||
|
||||
return c.Status(fiber.StatusOK).JSON(utils.FormatResponse(
|
||||
fiber.StatusOK,
|
||||
"Users fetched successfully",
|
||||
users,
|
||||
))
|
||||
}
|
||||
|
||||
func GetUserByUserID(c *fiber.Ctx) error {
|
||||
userID := c.Params("userID")
|
||||
|
||||
user, err := services.GetUserByUserID(userID)
|
||||
if err != nil {
|
||||
return c.Status(fiber.StatusNotFound).JSON(utils.FormatResponse(
|
||||
fiber.StatusNotFound,
|
||||
"User not found",
|
||||
nil,
|
||||
))
|
||||
}
|
||||
|
||||
return c.Status(fiber.StatusOK).JSON(utils.FormatResponse(
|
||||
fiber.StatusOK,
|
||||
"User fetched successfully",
|
||||
struct {
|
||||
User dto.UserResponseDTO `json:"user"`
|
||||
}{
|
||||
User: user,
|
||||
},
|
||||
))
|
||||
}
|
|
@ -0,0 +1,33 @@
|
|||
package repositories
|
||||
|
||||
import (
|
||||
"github.com/pahmiudahgede/senggoldong/domain"
|
||||
"github.com/pahmiudahgede/senggoldong/config"
|
||||
)
|
||||
|
||||
func GetUsers() ([]domain.User, error) {
|
||||
var users []domain.User
|
||||
|
||||
if err := config.DB.Find(&users).Error; err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return users, nil
|
||||
}
|
||||
|
||||
func GetUsersByRole(roleID string) ([]domain.User, error) {
|
||||
var users []domain.User
|
||||
|
||||
if err := config.DB.Where("role_id = ?", roleID).Find(&users).Error; err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return users, nil
|
||||
}
|
||||
|
||||
func GetUserByUserrId(userID string) (domain.User, error) {
|
||||
var user domain.User
|
||||
|
||||
if err := config.DB.Where("id = ?", userID).First(&user).Error; err != nil {
|
||||
return domain.User{}, err
|
||||
}
|
||||
return user, nil
|
||||
}
|
|
@ -0,0 +1,71 @@
|
|||
package services
|
||||
|
||||
import (
|
||||
"github.com/pahmiudahgede/senggoldong/dto"
|
||||
"github.com/pahmiudahgede/senggoldong/internal/repositories"
|
||||
"github.com/pahmiudahgede/senggoldong/utils"
|
||||
)
|
||||
|
||||
func GetUsers() ([]dto.UserResponseDTO, error) {
|
||||
users, err := repositories.GetUsers()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var userResponses []dto.UserResponseDTO
|
||||
for _, user := range users {
|
||||
userResponses = append(userResponses, dto.UserResponseDTO{
|
||||
ID: user.ID,
|
||||
Username: user.Username,
|
||||
Name: user.Name,
|
||||
Email: user.Email,
|
||||
Phone: user.Phone,
|
||||
RoleId: user.RoleID,
|
||||
CreatedAt: utils.FormatDateToIndonesianFormat(user.CreatedAt),
|
||||
UpdatedAt: utils.FormatDateToIndonesianFormat(user.UpdatedAt),
|
||||
})
|
||||
}
|
||||
return userResponses, nil
|
||||
}
|
||||
|
||||
func GetUsersByRole(roleID string) ([]dto.UserResponseDTO, error) {
|
||||
users, err := repositories.GetUsersByRole(roleID)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var userResponses []dto.UserResponseDTO
|
||||
for _, user := range users {
|
||||
userResponses = append(userResponses, dto.UserResponseDTO{
|
||||
ID: user.ID,
|
||||
Username: user.Username,
|
||||
Name: user.Name,
|
||||
Email: user.Email,
|
||||
Phone: user.Phone,
|
||||
RoleId: user.RoleID,
|
||||
CreatedAt: utils.FormatDateToIndonesianFormat(user.CreatedAt),
|
||||
UpdatedAt: utils.FormatDateToIndonesianFormat(user.UpdatedAt),
|
||||
})
|
||||
}
|
||||
return userResponses, nil
|
||||
}
|
||||
|
||||
func GetUserByUserID(userID string) (dto.UserResponseDTO, error) {
|
||||
user, err := repositories.GetUserByID(userID)
|
||||
if err != nil {
|
||||
return dto.UserResponseDTO{}, err
|
||||
}
|
||||
|
||||
userResponse := dto.UserResponseDTO{
|
||||
ID: user.ID,
|
||||
Username: user.Username,
|
||||
Name: user.Name,
|
||||
Email: user.Email,
|
||||
Phone: user.Phone,
|
||||
RoleId: user.RoleID,
|
||||
CreatedAt: utils.FormatDateToIndonesianFormat(user.CreatedAt),
|
||||
UpdatedAt: utils.FormatDateToIndonesianFormat(user.UpdatedAt),
|
||||
}
|
||||
|
||||
return userResponse, nil
|
||||
}
|
Loading…
Reference in New Issue