Coffee journaling on ATProto (alpha) alpha.arabica.social
coffee

feat: add join/invite events to audit log

pdewey.com 350321a9 c46a93de

verified
+33 -2
+29
internal/handlers/join.go
··· 10 10 "arabica/internal/atproto" 11 11 "arabica/internal/database/boltstore" 12 12 "arabica/internal/middleware" 13 + "arabica/internal/moderation" 13 14 "arabica/internal/web/bff" 14 15 "arabica/internal/web/pages" 15 16 ··· 167 168 log.Info().Str("email", reqEmail).Msg("Invite code emailed") 168 169 } 169 170 171 + // Log the action 172 + if h.moderationStore != nil { 173 + auditEntry := moderation.AuditEntry{ 174 + ID: generateTID(), 175 + Action: moderation.AuditActionCreateInvite, 176 + ActorDID: userDID, 177 + TargetURI: reqEmail, 178 + Timestamp: time.Now(), 179 + } 180 + if err := h.moderationStore.LogAction(r.Context(), auditEntry); err != nil { 181 + log.Error().Err(err).Msg("Failed to log create invite action") 182 + } 183 + } 184 + 170 185 // Remove the join request 171 186 if h.joinStore != nil { 172 187 if err := h.joinStore.DeleteRequest(reqID); err != nil { ··· 205 220 log.Error().Err(err).Str("id", reqID).Msg("Failed to delete join request") 206 221 http.Error(w, "Failed to dismiss request", http.StatusInternalServerError) 207 222 return 223 + } 224 + } 225 + 226 + // Log the action 227 + if h.moderationStore != nil { 228 + auditEntry := moderation.AuditEntry{ 229 + ID: generateTID(), 230 + Action: moderation.AuditActionDismissJoinRequest, 231 + ActorDID: userDID, 232 + TargetURI: reqID, 233 + Timestamp: time.Now(), 234 + } 235 + if err := h.moderationStore.LogAction(r.Context(), auditEntry); err != nil { 236 + log.Error().Err(err).Msg("Failed to log dismiss join request action") 208 237 } 209 238 } 210 239
+4 -2
internal/moderation/models.go
··· 148 148 AuditActionUnhideRecord AuditAction = "unhide_record" 149 149 AuditActionBlacklistUser AuditAction = "blacklist_user" 150 150 AuditActionUnblacklistUser AuditAction = "unblacklist_user" 151 - AuditActionDismissReport AuditAction = "dismiss_report" 152 - AuditActionActionReport AuditAction = "action_report" 151 + AuditActionDismissReport AuditAction = "dismiss_report" 152 + AuditActionActionReport AuditAction = "action_report" 153 + AuditActionDismissJoinRequest AuditAction = "dismiss_join_request" 154 + AuditActionCreateInvite AuditAction = "create_invite" 153 155 ) 154 156 155 157 // AuditEntry represents a logged moderation action