@mostajs/auth 1.0.2 → 1.0.3
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 +8 -13
- package/dist/index.js +14 -18
- 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/types/index.d.ts +1 -60
- package/dist/types/index.js +3 -1
- package/package.json +12 -12
- package/wire.json +12 -0
package/dist/index.d.ts
CHANGED
|
@@ -3,19 +3,14 @@ export { createAuthChecks } from './lib/auth-check';
|
|
|
3
3
|
export { createAuthMiddleware } from './middleware/auth-middleware';
|
|
4
4
|
export type { AuthMiddlewareOptions } from './middleware/auth-middleware';
|
|
5
5
|
export { hashPassword, comparePassword } from './lib/password';
|
|
6
|
-
export { hasPermission,
|
|
7
|
-
export { getPermissionsForRoleFromDB } from '
|
|
8
|
-
export { seedRBAC } from '
|
|
9
|
-
export type { SeedRBACOptions } from '
|
|
10
|
-
export { UserSchema } from '
|
|
11
|
-
export {
|
|
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';
|
|
6
|
+
export { hasPermission, hasAllPermissions, hasAnyPermission } from '@mostajs/socle';
|
|
7
|
+
export { getPermissionsForRoleFromDB } from '@mostajs/rbac/lib/permissions-server';
|
|
8
|
+
export { seedRBAC } from '@mostajs/rbac/lib/rbac-seed';
|
|
9
|
+
export type { SeedRBACOptions } from '@mostajs/rbac/lib/rbac-seed';
|
|
10
|
+
export { UserSchema, RoleSchema, PermissionSchema, PermissionCategorySchema } from '@mostajs/rbac';
|
|
11
|
+
export { UserRepository, RoleRepository, PermissionRepository, PermissionCategoryRepository } from '@mostajs/rbac';
|
|
18
12
|
export { usePermissions } from './hooks/usePermissions';
|
|
19
13
|
export { default as PermissionGuard } from './components/PermissionGuard';
|
|
20
14
|
export { default as SessionProvider } from './components/SessionProvider';
|
|
21
|
-
export type {
|
|
15
|
+
export type { UserDTO, RoleDTO, PermissionDTO, PermissionCategoryDTO, PermissionDefinition, RoleDefinition, CategoryDefinition, } from '@mostajs/rbac';
|
|
16
|
+
export type { MostaAuthConfig } from './types/index';
|
package/dist/index.js
CHANGED
|
@@ -1,27 +1,23 @@
|
|
|
1
|
-
// @
|
|
1
|
+
// @mostajs/auth — Barrel exports
|
|
2
2
|
// Author: Dr Hamid MADANI drmdh@msn.com
|
|
3
|
+
// Phase 3: schemas/repos/seed moved to @mostajs/rbac.
|
|
4
|
+
// Re-exported here for backwards compatibility.
|
|
3
5
|
// Auth factory
|
|
4
6
|
export { createAuthHandlers } from './lib/auth';
|
|
5
7
|
export { createAuthChecks } from './lib/auth-check';
|
|
6
8
|
export { createAuthMiddleware } from './middleware/auth-middleware';
|
|
7
|
-
// Password utils
|
|
9
|
+
// Password utils (stays in auth — it's authentication)
|
|
8
10
|
export { hashPassword, comparePassword } from './lib/password';
|
|
9
|
-
// Permission helpers (
|
|
10
|
-
export { hasPermission,
|
|
11
|
-
// Server-side permission DB lookup
|
|
12
|
-
export { getPermissionsForRoleFromDB } from '
|
|
13
|
-
// RBAC seed
|
|
14
|
-
export { seedRBAC } from '
|
|
15
|
-
// Schemas
|
|
16
|
-
export { UserSchema } from '
|
|
17
|
-
|
|
18
|
-
export {
|
|
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';
|
|
11
|
+
// Permission helpers (hasPermission now lives in @mostajs/socle)
|
|
12
|
+
export { hasPermission, hasAllPermissions, hasAnyPermission } from '@mostajs/socle';
|
|
13
|
+
// Server-side permission DB lookup (re-export from rbac)
|
|
14
|
+
export { getPermissionsForRoleFromDB } from '@mostajs/rbac/lib/permissions-server';
|
|
15
|
+
// RBAC seed (re-export from rbac)
|
|
16
|
+
export { seedRBAC } from '@mostajs/rbac/lib/rbac-seed';
|
|
17
|
+
// Schemas (re-export from rbac)
|
|
18
|
+
export { UserSchema, RoleSchema, PermissionSchema, PermissionCategorySchema } from '@mostajs/rbac';
|
|
19
|
+
// Repositories (re-export from rbac)
|
|
20
|
+
export { UserRepository, RoleRepository, PermissionRepository, PermissionCategoryRepository } from '@mostajs/rbac';
|
|
25
21
|
// Hooks
|
|
26
22
|
export { usePermissions } from './hooks/usePermissions';
|
|
27
23
|
// 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';
|
|
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/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.3",
|
|
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,20 @@
|
|
|
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
|
+
"./register": {
|
|
57
|
+
"types": "./dist/register.d.ts",
|
|
58
|
+
"import": "./dist/register.js",
|
|
59
|
+
"default": "./dist/register.js"
|
|
65
60
|
}
|
|
66
61
|
},
|
|
67
62
|
"files": [
|
|
68
63
|
"dist",
|
|
64
|
+
"wire.json",
|
|
69
65
|
"LICENSE",
|
|
70
66
|
"README.md"
|
|
71
67
|
],
|
|
@@ -96,11 +92,15 @@
|
|
|
96
92
|
"bcryptjs": "^2.4.3"
|
|
97
93
|
},
|
|
98
94
|
"peerDependencies": {
|
|
95
|
+
"@mostajs/rbac": ">=1.0.0",
|
|
96
|
+
"@mostajs/socle": ">=2.0.0",
|
|
99
97
|
"next": ">=14",
|
|
100
98
|
"next-auth": ">=5.0.0-beta.25",
|
|
101
99
|
"react": ">=18"
|
|
102
100
|
},
|
|
103
101
|
"devDependencies": {
|
|
102
|
+
"@mostajs/rbac": "^1.0.4",
|
|
103
|
+
"@mostajs/socle": "^2.0.0",
|
|
104
104
|
"@types/bcryptjs": "^2.4.0",
|
|
105
105
|
"@types/node": "^25.3.3",
|
|
106
106
|
"@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
|
+
}
|