How fandyajpo/sap_core works
SAP Core is a tenant workspace with account registration and sign-in, organization membership and resource endpoints, and scoped role administration. Users authenticate before interacting with organization, company, and plant data; tenant services validate scope and membership, load grants, and evaluate permissions before protected operations. Role management covers custom role definitions and revisions as well as assignments. The README is only a title, so capability details and links below rely on the source index and sampled files; unsampled implementation details are not assumed.
Main entry points: tenant-authorization.ts Tenant permission gate · prisma.ts Database client · tenant-target-context-core.ts Tenant target context · tenant-role-definition-service.ts Tenant role services
Components 21
Identity and workspace
- Sign-in and registration
src/components/auth-form.tsx - Workspace pages
src/app/page.tsx - Session access
src/lib/auth-session.ts - Authentication service
src/lib/auth.ts - Authentication API
src/app/api/auth/[...all]/route.ts
Tenant operations
- Organization members API
src/app/api/organizations/[organizationId]/members/route.ts - Company resource API
src/app/api/organizations/[organizationId]/companies/[companyId]/route.ts - Plant resource API
src/app/api/organizations/[organizationId]/companies/[companyId]/plants/[plantId]/route.ts
Tenant authorization
- Tenant target context
src/lib/tenant-target-context-core.ts - Tenant permission gate
src/lib/tenant-authorization.ts - Authorization grant loader
src/lib/authorization-grant-loader.ts - Authorization policy
src/lib/authorization-policy-core.ts
Role management
- Organization roles API
src/app/api/organizations/[organizationId]/roles/route.ts - Role revisions API
src/app/api/organizations/[organizationId]/roles/[roleDefinitionId]/revisions/route.ts - Role assignments API
src/app/api/organizations/[organizationId]/roles/assignments/route.ts - Tenant role services
src/lib/tenant-role-definition-service.ts - Role definition service
src/lib/role-definition-service.ts - Role assignment service
src/lib/role-assignment-service.ts
Persistence
- Scoped access service
src/lib/scoped-access-service.ts - Database client
src/lib/prisma.ts
Other components
- Workspace user
Connections 31
- Workspace user → Sign-in and registration: submits credentials
src/components/auth-form.tsx - Sign-in and registration → Authentication service: authenticates via client
src/components/auth-form.tsx - Workspace user → Workspace pages: opens workspace
src/app/page.tsx - Workspace pages → Session access: reads session
src/app/page.tsx - Authentication API → Authentication service: routes auth requests
src/app/api/auth/[...all]/route.ts - Session access → Authentication service: gets session
src/lib/auth-session.ts - Authentication service → Database client: uses database
src/lib/auth.ts - Organization members API → Tenant permission gate: checks tenant access
src/app/api/organizations/[organizationId]/members/route.ts - Organization members API → Tenant target context: resolves tenant scope
src/app/api/organizations/[organizationId]/members/route.ts - Organization members API → Database client: reads memberships
- Company resource API → Tenant permission gate: checks tenant access
src/app/api/organizations/[organizationId]/companies/[companyId]/route.ts - Company resource API → Tenant target context: resolves tenant scope
src/app/api/organizations/[organizationId]/companies/[companyId]/route.ts - Company resource API → Database client: reads company resource
- Plant resource API → Tenant permission gate: checks tenant access
src/app/api/organizations/[organizationId]/companies/[companyId]/plants/[plantId]/route.ts - Plant resource API → Tenant target context: resolves tenant scope
src/app/api/organizations/[organizationId]/companies/[companyId]/plants/[plantId]/route.ts - Plant resource API → Database client: reads plant resource
- Tenant permission gate → Tenant target context: validates target
src/lib/tenant-authorization.ts - Tenant permission gate → Authorization grant loader: loads grants
src/lib/tenant-authorization.ts - Tenant permission gate → Authorization policy: evaluates permission
src/lib/tenant-authorization.ts - Authorization grant loader → Database client: reads role grants
src/lib/authorization-grant-loader.ts - Organization roles API → Tenant role services: handles role requests
src/app/api/organizations/[organizationId]/roles/route.ts - Organization roles API → Tenant permission gate: checks role access
src/app/api/organizations/[organizationId]/roles/route.ts - Tenant role services → Role definition service: delegates role changes
src/lib/tenant-role-definition-service.ts - Tenant role services → Scoped access service: creates scoped database
src/lib/tenant-role-definition-service.ts - Role revisions API → Tenant role services: handles role revisions
src/app/api/organizations/[organizationId]/roles/[roleDefinitionId]/revisions/route.ts - Role revisions API → Role definition service: uses role definitions
src/app/api/organizations/[organizationId]/roles/[roleDefinitionId]/revisions/route.ts - Role assignments API → Role assignment service: handles assignments
src/app/api/organizations/[organizationId]/roles/assignments/route.ts - Role assignments API → Tenant target context: resolves tenant scope
src/app/api/organizations/[organizationId]/roles/assignments/route.ts - Role assignment service → Scoped access service: uses scoped database
src/lib/role-assignment-service.ts - Role definition service → Scoped access service: uses scoped database
src/lib/role-definition-service.ts - Scoped access service → Database client: queries database
src/lib/scoped-access.ts