mirror of
https://github.com/andwati/telecom-platform.git
synced 2026-10-18 02:52:53 +00:00
feat: Add subscriber management API endpoints with RBAC authorization
- Add SubscriberHandler to serverDeps with NewSubscriberService initialization - Add subscriber routes to v1 API with GET (list, by id, by IMSI) and protected POST/PUT operations - Add RBAC enforcement for subscriber creation, updates, suspension, and termination (admin, operator roles) - Add registerSubscriberRoutes function with /subscribers endpoint group
This commit is contained in:
@@ -18,6 +18,7 @@ type serverDeps struct {
|
||||
casbinSvc *rbac.CasbinService
|
||||
|
||||
authH *handlers.AuthHandler
|
||||
subscriberH *handlers.SubscriberHandler
|
||||
servicesH *handlers.ServicesHandler
|
||||
monitoringH *handlers.MonitoringHandler
|
||||
deploymentsH *handlers.DeploymentsHandler
|
||||
@@ -46,6 +47,7 @@ func buildDeps(db *database.Database, cfg *config.Config) *serverDeps {
|
||||
configStoreSvc := services.NewConfigStoreService(db)
|
||||
deploymentSvc := services.NewDeploymentService(db)
|
||||
promSvc := monitoring.NewPrometheusService()
|
||||
subscriberSvc := services.NewSubscriberService(db, cfg)
|
||||
|
||||
// Initialize charging engine client
|
||||
chargingEngineClient := services.NewChargingEngineClient(&cfg.ChargingEngine)
|
||||
@@ -59,6 +61,7 @@ func buildDeps(db *database.Database, cfg *config.Config) *serverDeps {
|
||||
authSvc: authSvc,
|
||||
casbinSvc: casbinSvc,
|
||||
authH: handlers.NewAuthHandler(authSvc),
|
||||
subscriberH: handlers.NewSubscriberHandler(subscriberSvc),
|
||||
servicesH: handlers.NewServicesHandler(k8sSvc),
|
||||
monitoringH: handlers.NewMonitoringHandler(promSvc),
|
||||
deploymentsH: handlers.NewDeploymentsHandler(deploymentSvc),
|
||||
|
||||
@@ -57,6 +57,7 @@ func registerV1Routes(router *gin.Engine, d *serverDeps) {
|
||||
apiProtected := v1.Group("/")
|
||||
apiProtected.Use(middleware.AuthMiddleware(d.authSvc))
|
||||
{
|
||||
registerSubscriberRoutes(apiProtected, d)
|
||||
registerServicesRoutes(apiProtected, d)
|
||||
registerMonitoringRoutes(apiProtected, d)
|
||||
registerDeployRoutes(apiProtected, d)
|
||||
@@ -173,3 +174,17 @@ func registerChaosRoutes(api *gin.RouterGroup, d *serverDeps) {
|
||||
applyRBAC(w, d.casbinSvc, "/v1/chaos", "POST", "admin")
|
||||
w.POST("/experiments", d.chaosH.Run)
|
||||
}
|
||||
|
||||
func registerSubscriberRoutes(api *gin.RouterGroup, d *serverDeps) {
|
||||
subs := api.Group("/subscribers")
|
||||
subs.GET("", d.subscriberH.ListSubscribers)
|
||||
subs.GET("/:id", d.subscriberH.GetSubscriber)
|
||||
subs.GET("/imsi/:imsi", d.subscriberH.GetSubscriberByIMSI)
|
||||
|
||||
w := subs.Group("/")
|
||||
applyRBAC(w, d.casbinSvc, "/v1/subscribers", "POST", "admin", "operator")
|
||||
w.POST("", d.subscriberH.CreateSubscriber)
|
||||
w.PUT("/:id", d.subscriberH.UpdateSubscriber)
|
||||
w.POST("/:id/suspend", d.subscriberH.SuspendSubscriber)
|
||||
w.POST("/:id/terminate", d.subscriberH.TerminateSubscriber)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user