Skip to content

security: Add guard to admin audit-log endpoint #214

@Xhristin3

Description

@Xhristin3

Problem Statement

The GET /admin/audit-logs endpoint (api/src/audit/admin-audit.controller.ts) has no authentication or authorization guard. Anyone can query the audit log, including user IDs, actions performed (login, password_change, stream_delete, role_change), and IP addresses.

Evidence

// api/src/audit/admin-audit.controller.ts — no @UseGuards decorator
@Controller("admin/audit-logs")
export class AdminAuditController {
  @Get()
  async findAll(@Query() query: PaginationQueryDto) { ... }
}

Impact

Unauthenticated access to audit logs exposes sensitive user activity data. IP addresses, login timestamps, and privileged action history are publicly accessible.

Proposed Solution

Add @UseGuards(RolesGuard) and @Roles("admin") decorators to the controller, matching the pattern used in AdminController.

Acceptance Criteria

  • GET /admin/audit-logs returns 401 without auth header
  • GET /admin/audit-logs returns 403 for non-admin users
  • GET /admin/audit-logs succeeds for admin users
  • AdminAuditController imports and uses RolesGuard + @roles('admin')

File Map

  • api/src/audit/admin-audit.controller.ts — add guards

Labels: security, quick win
Priority: Medium | Difficulty: Beginner | Estimated Effort: 0.5h


Labels: security,quick win
Priority: Medium | Difficulty: Beginner | Estimated Effort: 0.5h
Backlog ID: REPO-031

Metadata

Metadata

Assignees

No one assigned

    Labels

    GrantFox OSSIssue tracked in GrantFox OSSMaybe RewardedIssue may be eligible for a GrantFox rewardOfficial CampaignCampaign: Official Campaignquick winsecuritySecurity related issues

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions