Initial commit: OAuth IAM Laravel application

Laravel-based OAuth/IAM service with Passport, Vue 3 frontend, and
Docker Compose setup for local and production deployment.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-26 01:02:41 +02:00
commit c2b5291a74
174 changed files with 29318 additions and 0 deletions

View File

@@ -0,0 +1,90 @@
export interface User {
id: number;
name: string;
email: string;
is_active: boolean;
roles: string[];
permissions?: string[];
created_at: string;
deleted_at?: string | null;
approved_at?: string | null;
}
export interface OAuthClient {
id: string;
owner_id: number;
owner_type: string;
name: string;
secret: string | null;
provider: string | null;
redirect_uris: string[];
grant_types: string[];
revoked: boolean;
created_at: string;
updated_at: string;
}
export interface PersonalAccessToken {
id: string;
name: string;
scopes: string[];
created_at: string;
expires_at: string | null;
}
export interface AuthorizedAppToken {
id: string;
user_id: number;
client_id: string;
name: string | null;
scopes: string[];
revoked: boolean;
created_at: string;
updated_at: string;
expires_at: string | null;
client: { id: string; name: string };
}
export interface Scope {
id: string;
description: string;
}
export interface OAuthApp {
id: string;
name: string;
}
export interface AppRoleGroup {
client_id: string;
client_name: string;
roles: string[];
}
export interface AnalyticsSummary {
kpis: {
total_users: number;
active_sessions: number;
logins_today: number;
logins_7d: number;
};
logins_by_day: Array<{ date: string; session: number; oauth: number }>;
logins_by_app: Array<{ client_name: string; count: number }>;
top_users: Array<{ name: string; email: string; count: number }>;
recent: Array<{
user_name: string | null;
user_email: string | null;
client_name: string;
type: 'session' | 'oauth';
ip_address: string | null;
created_at: string;
}>;
}
export interface OAuthAuthorizePayload {
authToken: string;
csrfToken: string;
client: { id: string; name: string };
scopes: Scope[];
user: { name: string; email: string };
}