Skip to content

Commit c71e7b2

Browse files
committed
add audit events
1 parent d591ab0 commit c71e7b2

15 files changed

Lines changed: 869 additions & 1 deletion

server/app/admin_handler.go

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,11 @@ func (a *App) SetPricesHandler(req *http.Request) (interface{}, Response) {
169169
a.config.PricesPerMonth.PublicIP = input.PublicIP
170170
}
171171

172+
if err := a.logVMsPriceUpdate(req, a.config.PricesPerMonth); err != nil {
173+
log.Error().Err(err).Send()
174+
return nil, InternalServerError(errors.New(internalServerErrorMsg))
175+
}
176+
172177
return ResponseMsg{
173178
Message: "New prices are set",
174179
Data: nil,
@@ -314,6 +319,11 @@ func (a *App) DeleteAllDeploymentsHandler(req *http.Request) (interface{}, Respo
314319
}
315320
}
316321

322+
if err := a.logAllDeploymentsDelete(req); err != nil {
323+
log.Error().Err(err).Send()
324+
return nil, InternalServerError(errors.New(internalServerErrorMsg))
325+
}
326+
317327
return ResponseMsg{
318328
Message: "Deployments are deleted successfully",
319329
}, Ok()
@@ -416,6 +426,11 @@ func (a *App) UpdateMaintenanceHandler(req *http.Request) (interface{}, Response
416426
return nil, InternalServerError(errors.New(internalServerErrorMsg))
417427
}
418428

429+
if err := a.logMaintenanceUpdate(req, input.ON); err != nil {
430+
log.Error().Err(err).Send()
431+
return nil, InternalServerError(errors.New(internalServerErrorMsg))
432+
}
433+
419434
return ResponseMsg{
420435
Message: "Maintenance is updated successfully",
421436
Data: nil,
@@ -477,6 +492,11 @@ func (a *App) SetAdminHandler(req *http.Request) (interface{}, Response) {
477492
return nil, InternalServerError(errors.New(internalServerErrorMsg))
478493
}
479494

495+
if err := a.logAdminSet(req, user.ID.String(), input.Admin); err != nil {
496+
log.Error().Err(err).Send()
497+
return nil, InternalServerError(errors.New(internalServerErrorMsg))
498+
}
499+
480500
return ResponseMsg{
481501
Message: "User is updated successfully",
482502
}, Ok()
@@ -537,6 +557,11 @@ func (a *App) CreateNewAnnouncementHandler(req *http.Request) (interface{}, Resp
537557
}
538558
}
539559

560+
if err := a.logAnnouncementCreate(req, adminAnnouncement.Subject); err != nil {
561+
log.Error().Err(err).Send()
562+
return nil, InternalServerError(errors.New(internalServerErrorMsg))
563+
}
564+
540565
return ResponseMsg{
541566
Message: "new announcement is sent successfully",
542567
}, Created()
@@ -598,6 +623,11 @@ func (a *App) SendEmailHandler(req *http.Request) (interface{}, Response) {
598623
return nil, InternalServerError(errors.New(internalServerErrorMsg))
599624
}
600625

626+
if err := a.logEmailSent(req, user.ID.String(), emailUser.Subject); err != nil {
627+
log.Error().Err(err).Send()
628+
return nil, InternalServerError(errors.New(internalServerErrorMsg))
629+
}
630+
601631
return ResponseMsg{
602632
Message: "new email is sent successfully",
603633
}, Created()
@@ -636,6 +666,11 @@ func (a *App) UpdateNextLaunchHandler(req *http.Request) (interface{}, Response)
636666
return nil, InternalServerError(errors.New(internalServerErrorMsg))
637667
}
638668

669+
if err := a.logNextLaunchUpdate(req, input.Launched); err != nil {
670+
log.Error().Err(err).Send()
671+
return nil, InternalServerError(errors.New(internalServerErrorMsg))
672+
}
673+
639674
return ResponseMsg{
640675
Message: "Next Launch is updated successfully",
641676
Data: nil,

server/app/app.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,7 @@ func (a *App) registerHandlers() {
119119
invoiceRouter := authRouter.PathPrefix("/invoice").Subrouter()
120120
cardRouter := userRouter.PathPrefix("/card").Subrouter()
121121
logRouter := userRouter.PathPrefix("/log").Subrouter()
122+
eventRouter := userRouter.PathPrefix("/event").Subrouter()
122123
notificationRouter := authRouter.PathPrefix("/notification").Subrouter()
123124
vmRouter := authRouter.PathPrefix("/vm").Subrouter()
124125
k8sRouter := authRouter.PathPrefix("/k8s").Subrouter()
@@ -159,6 +160,8 @@ func (a *App) registerHandlers() {
159160

160161
logRouter.HandleFunc("", WrapFunc(a.ListLogsHandler)).Methods("GET", "OPTIONS")
161162

163+
eventRouter.HandleFunc("", WrapFunc(a.ListEventsHandler)).Methods("GET", "OPTIONS")
164+
162165
invoiceRouter.HandleFunc("", WrapFunc(a.ListInvoicesHandler)).Methods("GET", "OPTIONS")
163166
invoiceRouter.HandleFunc("/{id}", WrapFunc(a.GetInvoiceHandler)).Methods("GET", "OPTIONS")
164167
invoiceRouter.HandleFunc("/download/{id}", WrapFunc(a.DownloadInvoiceHandler)).Methods("GET", "OPTIONS")

server/app/audit_handler.go

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,3 +42,37 @@ func (a *App) ListLogsHandler(req *http.Request) (interface{}, Response) {
4242
Data: logs,
4343
}, Ok()
4444
}
45+
46+
// Example endpoint: List user's events
47+
// @Summary List user's events
48+
// @Description List user's events
49+
// @Tags Audit
50+
// @Accept json
51+
// @Produce json
52+
// @Security BearerAuth
53+
// @Success 200 {object} []models.AuditEvent
54+
// @Failure 400 {object} Response
55+
// @Failure 401 {object} Response
56+
// @Failure 404 {object} Response
57+
// @Failure 500 {object} Response
58+
// @Router /user/event [get]
59+
func (a *App) ListEventsHandler(req *http.Request) (interface{}, Response) {
60+
userID := req.Context().Value(middlewares.UserIDKey("UserID")).(string)
61+
62+
events, err := a.db.GetUserEvents(userID)
63+
if err == gorm.ErrRecordNotFound || len(events) == 0 {
64+
return ResponseMsg{
65+
Message: "no events found",
66+
Data: events,
67+
}, Ok()
68+
}
69+
if err != nil {
70+
log.Error().Err(err).Send()
71+
return nil, InternalServerError(errors.New(internalServerErrorMsg))
72+
}
73+
74+
return ResponseMsg{
75+
Message: "Events are found",
76+
Data: events,
77+
}, Ok()
78+
}

0 commit comments

Comments
 (0)