@mostajs/auth 1.0.2 → 1.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +4 -18
- package/dist/index.js +6 -23
- package/dist/lib/auth-check.js +2 -2
- package/dist/lib/auth.js +5 -8
- package/dist/lib/permissions-server.d.ts +1 -5
- package/dist/lib/permissions-server.js +3 -23
- package/dist/register.d.ts +4 -0
- package/dist/register.js +19 -0
- package/dist/server.d.ts +9 -0
- package/dist/server.js +15 -0
- package/dist/types/index.d.ts +1 -60
- package/dist/types/index.js +3 -1
- package/package.json +17 -12
- package/wire.json +12 -0
package/dist/index.d.ts
CHANGED
|
@@ -1,21 +1,7 @@
|
|
|
1
|
-
export {
|
|
2
|
-
export {
|
|
3
|
-
export { createAuthMiddleware } from './middleware/auth-middleware';
|
|
4
|
-
export type { AuthMiddlewareOptions } from './middleware/auth-middleware';
|
|
5
|
-
export { hashPassword, comparePassword } from './lib/password';
|
|
6
|
-
export { hasPermission, getPermissionsForRole } from './lib/permissions';
|
|
7
|
-
export { getPermissionsForRoleFromDB } from './lib/permissions-server';
|
|
8
|
-
export { seedRBAC } from './lib/rbac-seed';
|
|
9
|
-
export type { SeedRBACOptions } from './lib/rbac-seed';
|
|
10
|
-
export { UserSchema } from './schemas/user.schema';
|
|
11
|
-
export { RoleSchema } from './schemas/role.schema';
|
|
12
|
-
export { PermissionSchema } from './schemas/permission.schema';
|
|
13
|
-
export { PermissionCategorySchema } from './schemas/permission-category.schema';
|
|
14
|
-
export { UserRepository } from './repositories/user.repository';
|
|
15
|
-
export { RoleRepository } from './repositories/role.repository';
|
|
16
|
-
export { PermissionRepository } from './repositories/permission.repository';
|
|
17
|
-
export { PermissionCategoryRepository } from './repositories/permission-category.repository';
|
|
1
|
+
export { hasPermission, hasAllPermissions, hasAnyPermission } from '@mostajs/socle';
|
|
2
|
+
export { UserSchema, RoleSchema, PermissionSchema, PermissionCategorySchema } from '@mostajs/rbac';
|
|
18
3
|
export { usePermissions } from './hooks/usePermissions';
|
|
19
4
|
export { default as PermissionGuard } from './components/PermissionGuard';
|
|
20
5
|
export { default as SessionProvider } from './components/SessionProvider';
|
|
21
|
-
export type {
|
|
6
|
+
export type { UserDTO, RoleDTO, PermissionDTO, PermissionCategoryDTO, PermissionDefinition, RoleDefinition, CategoryDefinition, } from '@mostajs/rbac';
|
|
7
|
+
export type { MostaAuthConfig } from './types/index';
|
package/dist/index.js
CHANGED
|
@@ -1,27 +1,10 @@
|
|
|
1
|
-
// @
|
|
1
|
+
// @mostajs/auth — Client-safe barrel (NO ORM imports)
|
|
2
2
|
// Author: Dr Hamid MADANI drmdh@msn.com
|
|
3
|
-
//
|
|
4
|
-
|
|
5
|
-
export {
|
|
6
|
-
export
|
|
7
|
-
|
|
8
|
-
export { hashPassword, comparePassword } from './lib/password';
|
|
9
|
-
// Permission helpers (client-safe)
|
|
10
|
-
export { hasPermission, getPermissionsForRole } from './lib/permissions';
|
|
11
|
-
// Server-side permission DB lookup
|
|
12
|
-
export { getPermissionsForRoleFromDB } from './lib/permissions-server';
|
|
13
|
-
// RBAC seed
|
|
14
|
-
export { seedRBAC } from './lib/rbac-seed';
|
|
15
|
-
// Schemas
|
|
16
|
-
export { UserSchema } from './schemas/user.schema';
|
|
17
|
-
export { RoleSchema } from './schemas/role.schema';
|
|
18
|
-
export { PermissionSchema } from './schemas/permission.schema';
|
|
19
|
-
export { PermissionCategorySchema } from './schemas/permission-category.schema';
|
|
20
|
-
// Repositories
|
|
21
|
-
export { UserRepository } from './repositories/user.repository';
|
|
22
|
-
export { RoleRepository } from './repositories/role.repository';
|
|
23
|
-
export { PermissionRepository } from './repositories/permission.repository';
|
|
24
|
-
export { PermissionCategoryRepository } from './repositories/permission-category.repository';
|
|
3
|
+
// For server-side code (repos, seed, auth handlers), use '@mostajs/auth/server'
|
|
4
|
+
// Permission helpers (from @mostajs/socle — no ORM)
|
|
5
|
+
export { hasPermission, hasAllPermissions, hasAnyPermission } from '@mostajs/socle';
|
|
6
|
+
// Schemas (re-export from rbac — pure data, no ORM)
|
|
7
|
+
export { UserSchema, RoleSchema, PermissionSchema, PermissionCategorySchema } from '@mostajs/rbac';
|
|
25
8
|
// Hooks
|
|
26
9
|
export { usePermissions } from './hooks/usePermissions';
|
|
27
10
|
// Components
|
package/dist/lib/auth-check.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
// @mosta/auth — Server-side auth guards
|
|
2
2
|
// Author: Dr Hamid MADANI drmdh@msn.com
|
|
3
3
|
import { NextResponse } from 'next/server';
|
|
4
|
-
import { hasPermission } from '
|
|
5
|
-
import { getPermissionsForRoleFromDB } from '
|
|
4
|
+
import { hasPermission } from '@mostajs/socle';
|
|
5
|
+
import { getPermissionsForRoleFromDB } from '@mostajs/rbac/lib/permissions-server';
|
|
6
6
|
/**
|
|
7
7
|
* Create server-side guard functions bound to your auth() instance.
|
|
8
8
|
*
|
package/dist/lib/auth.js
CHANGED
|
@@ -1,16 +1,13 @@
|
|
|
1
|
-
// @
|
|
1
|
+
// @mostajs/auth — NextAuth configuration factory
|
|
2
2
|
// Author: Dr Hamid MADANI drmdh@msn.com
|
|
3
|
+
// Phase 3: schemas/repos imported from @mostajs/rbac
|
|
3
4
|
import NextAuth from 'next-auth';
|
|
4
5
|
import CredentialsProvider from 'next-auth/providers/credentials';
|
|
5
6
|
import { getDialect, registerSchemas } from '@mostajs/orm';
|
|
6
|
-
import { UserRepository } from '
|
|
7
|
-
import {
|
|
7
|
+
import { UserRepository, RoleRepository } from '@mostajs/rbac/server';
|
|
8
|
+
import { UserSchema, RoleSchema, PermissionSchema, PermissionCategorySchema } from '@mostajs/rbac';
|
|
8
9
|
import { comparePassword } from './password';
|
|
9
|
-
|
|
10
|
-
import { RoleSchema } from '../schemas/role.schema';
|
|
11
|
-
import { PermissionSchema } from '../schemas/permission.schema';
|
|
12
|
-
import { PermissionCategorySchema } from '../schemas/permission-category.schema';
|
|
13
|
-
// Auto-register auth schemas into ORM registry (idempotent)
|
|
10
|
+
// Auto-register RBAC schemas into ORM registry (idempotent)
|
|
14
11
|
// Must run before getDialect() to ensure relations are resolvable
|
|
15
12
|
registerSchemas([UserSchema, RoleSchema, PermissionSchema, PermissionCategorySchema]);
|
|
16
13
|
/**
|
|
@@ -1,5 +1 @@
|
|
|
1
|
-
|
|
2
|
-
* Resolve permissions for a role by querying the database.
|
|
3
|
-
* Falls back to the provided static map if DB lookup fails.
|
|
4
|
-
*/
|
|
5
|
-
export declare function getPermissionsForRoleFromDB(role: string, fallbackMap?: Record<string, string[]>): Promise<string[]>;
|
|
1
|
+
export { getPermissionsForRoleFromDB } from '@mostajs/rbac/lib/permissions-server';
|
|
@@ -1,24 +1,4 @@
|
|
|
1
|
-
// @
|
|
1
|
+
// @mostajs/auth — Server-side permission lookup (DO NOT import client-side)
|
|
2
2
|
// Author: Dr Hamid MADANI drmdh@msn.com
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Resolve permissions for a role by querying the database.
|
|
7
|
-
* Falls back to the provided static map if DB lookup fails.
|
|
8
|
-
*/
|
|
9
|
-
export async function getPermissionsForRoleFromDB(role, fallbackMap) {
|
|
10
|
-
try {
|
|
11
|
-
const repo = new RoleRepository(await getDialect());
|
|
12
|
-
const dbRole = await repo.findByName(role);
|
|
13
|
-
if (dbRole) {
|
|
14
|
-
const roleWithPerms = await repo.findByIdWithPermissions(dbRole.id);
|
|
15
|
-
if (roleWithPerms?.permissions && roleWithPerms.permissions.length > 0) {
|
|
16
|
-
return roleWithPerms.permissions.map((p) => typeof p === 'string' ? p : p.name || p);
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
catch (err) {
|
|
21
|
-
console.error('[MostaAuth] DB permission lookup failed, using fallback:', err);
|
|
22
|
-
}
|
|
23
|
-
return fallbackMap?.[role] || [];
|
|
24
|
-
}
|
|
3
|
+
// Phase 3: re-exports from @mostajs/rbac (repos moved there)
|
|
4
|
+
export { getPermissionsForRoleFromDB } from '@mostajs/rbac/lib/permissions-server';
|
package/dist/register.js
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
// @mostajs/auth — Runtime module registration
|
|
2
|
+
// Author: Dr Hamid MADANI drmdh@msn.com
|
|
3
|
+
// Phase 3: schemas/repos moved to @mostajs/rbac. Auth is pure authentication.
|
|
4
|
+
export function register(registry) {
|
|
5
|
+
registry.register({
|
|
6
|
+
manifest: {
|
|
7
|
+
name: 'auth',
|
|
8
|
+
package: '@mostajs/auth',
|
|
9
|
+
version: '2.0.0',
|
|
10
|
+
type: 'core',
|
|
11
|
+
priority: 3,
|
|
12
|
+
dependencies: ['orm', 'rbac'],
|
|
13
|
+
displayName: 'Auth',
|
|
14
|
+
description: 'Authentication — NextAuth, password hashing, session management',
|
|
15
|
+
icon: 'Lock',
|
|
16
|
+
register: './dist/register.js',
|
|
17
|
+
},
|
|
18
|
+
});
|
|
19
|
+
}
|
package/dist/server.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export { createAuthHandlers } from './lib/auth';
|
|
2
|
+
export { createAuthChecks } from './lib/auth-check';
|
|
3
|
+
export { createAuthMiddleware } from './middleware/auth-middleware';
|
|
4
|
+
export type { AuthMiddlewareOptions } from './middleware/auth-middleware';
|
|
5
|
+
export { hashPassword, comparePassword } from './lib/password';
|
|
6
|
+
export { getPermissionsForRoleFromDB } from '@mostajs/rbac/lib/permissions-server';
|
|
7
|
+
export { seedRBAC } from '@mostajs/rbac/lib/rbac-seed';
|
|
8
|
+
export type { SeedRBACOptions } from '@mostajs/rbac/lib/rbac-seed';
|
|
9
|
+
export { UserRepository, RoleRepository, PermissionRepository, PermissionCategoryRepository } from '@mostajs/rbac/server';
|
package/dist/server.js
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
// @mostajs/auth/server — Server-side exports (ORM-dependent)
|
|
2
|
+
// Author: Dr Hamid MADANI drmdh@msn.com
|
|
3
|
+
// Import from '@mostajs/auth/server' in API routes and server code
|
|
4
|
+
// Auth handler factories (depend on ORM via rbac repos)
|
|
5
|
+
export { createAuthHandlers } from './lib/auth';
|
|
6
|
+
export { createAuthChecks } from './lib/auth-check';
|
|
7
|
+
export { createAuthMiddleware } from './middleware/auth-middleware';
|
|
8
|
+
// Password utils
|
|
9
|
+
export { hashPassword, comparePassword } from './lib/password';
|
|
10
|
+
// Server-side permission DB lookup (re-export from rbac/server)
|
|
11
|
+
export { getPermissionsForRoleFromDB } from '@mostajs/rbac/lib/permissions-server';
|
|
12
|
+
// RBAC seed (re-export from rbac/server)
|
|
13
|
+
export { seedRBAC } from '@mostajs/rbac/lib/rbac-seed';
|
|
14
|
+
// Repositories (re-export from rbac/server)
|
|
15
|
+
export { UserRepository, RoleRepository, PermissionRepository, PermissionCategoryRepository } from '@mostajs/rbac/server';
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { PermissionDefinition, RoleDefinition, CategoryDefinition } from '@mostajs/rbac';
|
|
1
2
|
export interface MostaAuthConfig {
|
|
2
3
|
/** Extra fields to add to the User schema */
|
|
3
4
|
extraUserFields?: Record<string, any>;
|
|
@@ -17,63 +18,3 @@ export interface MostaAuthConfig {
|
|
|
17
18
|
/** Protected path prefixes (redirect to login if no session) */
|
|
18
19
|
protectedPrefixes?: string[];
|
|
19
20
|
}
|
|
20
|
-
export interface PermissionDefinition {
|
|
21
|
-
code: string;
|
|
22
|
-
name: string;
|
|
23
|
-
description: string;
|
|
24
|
-
category: string;
|
|
25
|
-
}
|
|
26
|
-
export interface RoleDefinition {
|
|
27
|
-
name: string;
|
|
28
|
-
description: string;
|
|
29
|
-
system: boolean;
|
|
30
|
-
permissions: string[];
|
|
31
|
-
}
|
|
32
|
-
export interface CategoryDefinition {
|
|
33
|
-
name: string;
|
|
34
|
-
label: string;
|
|
35
|
-
description: string;
|
|
36
|
-
icon: string;
|
|
37
|
-
order: number;
|
|
38
|
-
system: boolean;
|
|
39
|
-
}
|
|
40
|
-
export interface UserDTO {
|
|
41
|
-
id: string;
|
|
42
|
-
email: string;
|
|
43
|
-
password?: string;
|
|
44
|
-
firstName: string;
|
|
45
|
-
lastName: string;
|
|
46
|
-
phone?: string;
|
|
47
|
-
roles: any[];
|
|
48
|
-
status: 'active' | 'locked' | 'disabled';
|
|
49
|
-
lastLoginAt?: string;
|
|
50
|
-
createdAt: string;
|
|
51
|
-
updatedAt: string;
|
|
52
|
-
}
|
|
53
|
-
export interface RoleDTO {
|
|
54
|
-
id: string;
|
|
55
|
-
name: string;
|
|
56
|
-
description?: string;
|
|
57
|
-
permissions: any[];
|
|
58
|
-
createdAt: string;
|
|
59
|
-
updatedAt: string;
|
|
60
|
-
}
|
|
61
|
-
export interface PermissionDTO {
|
|
62
|
-
id: string;
|
|
63
|
-
name: string;
|
|
64
|
-
description?: string;
|
|
65
|
-
category?: string;
|
|
66
|
-
createdAt: string;
|
|
67
|
-
updatedAt: string;
|
|
68
|
-
}
|
|
69
|
-
export interface PermissionCategoryDTO {
|
|
70
|
-
id: string;
|
|
71
|
-
name: string;
|
|
72
|
-
label: string;
|
|
73
|
-
description?: string;
|
|
74
|
-
icon?: string;
|
|
75
|
-
order: number;
|
|
76
|
-
system: boolean;
|
|
77
|
-
createdAt: string;
|
|
78
|
-
updatedAt: string;
|
|
79
|
-
}
|
package/dist/types/index.js
CHANGED
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mostajs/auth",
|
|
3
|
-
"version": "1.0.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "1.0.4",
|
|
4
|
+
"description": "Authentication — NextAuth, password hashing, session management",
|
|
5
5
|
"author": "Dr Hamid MADANI <drmdh@msn.com>",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"type": "module",
|
|
@@ -38,11 +38,6 @@
|
|
|
38
38
|
"import": "./dist/lib/auth-check.js",
|
|
39
39
|
"default": "./dist/lib/auth-check.js"
|
|
40
40
|
},
|
|
41
|
-
"./lib/permissions": {
|
|
42
|
-
"types": "./dist/lib/permissions.d.ts",
|
|
43
|
-
"import": "./dist/lib/permissions.js",
|
|
44
|
-
"default": "./dist/lib/permissions.js"
|
|
45
|
-
},
|
|
46
41
|
"./lib/permissions-server": {
|
|
47
42
|
"types": "./dist/lib/permissions-server.d.ts",
|
|
48
43
|
"import": "./dist/lib/permissions-server.js",
|
|
@@ -53,19 +48,25 @@
|
|
|
53
48
|
"import": "./dist/lib/password.js",
|
|
54
49
|
"default": "./dist/lib/password.js"
|
|
55
50
|
},
|
|
56
|
-
"./lib/rbac-seed": {
|
|
57
|
-
"types": "./dist/lib/rbac-seed.d.ts",
|
|
58
|
-
"import": "./dist/lib/rbac-seed.js",
|
|
59
|
-
"default": "./dist/lib/rbac-seed.js"
|
|
60
|
-
},
|
|
61
51
|
"./middleware/auth-middleware": {
|
|
62
52
|
"types": "./dist/middleware/auth-middleware.d.ts",
|
|
63
53
|
"import": "./dist/middleware/auth-middleware.js",
|
|
64
54
|
"default": "./dist/middleware/auth-middleware.js"
|
|
55
|
+
},
|
|
56
|
+
"./server": {
|
|
57
|
+
"types": "./dist/server.d.ts",
|
|
58
|
+
"import": "./dist/server.js",
|
|
59
|
+
"default": "./dist/server.js"
|
|
60
|
+
},
|
|
61
|
+
"./register": {
|
|
62
|
+
"types": "./dist/register.d.ts",
|
|
63
|
+
"import": "./dist/register.js",
|
|
64
|
+
"default": "./dist/register.js"
|
|
65
65
|
}
|
|
66
66
|
},
|
|
67
67
|
"files": [
|
|
68
68
|
"dist",
|
|
69
|
+
"wire.json",
|
|
69
70
|
"LICENSE",
|
|
70
71
|
"README.md"
|
|
71
72
|
],
|
|
@@ -96,11 +97,15 @@
|
|
|
96
97
|
"bcryptjs": "^2.4.3"
|
|
97
98
|
},
|
|
98
99
|
"peerDependencies": {
|
|
100
|
+
"@mostajs/rbac": ">=1.0.0",
|
|
101
|
+
"@mostajs/socle": ">=2.0.0",
|
|
99
102
|
"next": ">=14",
|
|
100
103
|
"next-auth": ">=5.0.0-beta.25",
|
|
101
104
|
"react": ">=18"
|
|
102
105
|
},
|
|
103
106
|
"devDependencies": {
|
|
107
|
+
"@mostajs/rbac": "^1.0.4",
|
|
108
|
+
"@mostajs/socle": "^2.0.0",
|
|
104
109
|
"@types/bcryptjs": "^2.4.0",
|
|
105
110
|
"@types/node": "^25.3.3",
|
|
106
111
|
"@types/react": "^19.0.0",
|
package/wire.json
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "auth",
|
|
3
|
+
"package": "@mostajs/auth",
|
|
4
|
+
"version": "2.0.0",
|
|
5
|
+
"type": "core",
|
|
6
|
+
"priority": 3,
|
|
7
|
+
"dependencies": ["orm", "rbac"],
|
|
8
|
+
"displayName": "Auth",
|
|
9
|
+
"description": "Authentication — NextAuth, password hashing, session management",
|
|
10
|
+
"icon": "Lock",
|
|
11
|
+
"register": "./dist/register.js"
|
|
12
|
+
}
|