@mostajs/rbac 2.2.2 → 2.3.1

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.
@@ -3,14 +3,14 @@
3
3
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
4
4
  import { useState } from 'react';
5
5
  import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';
6
- import { Button } from './ui/button';
7
- import { Input } from './ui/input';
8
- import { Label } from './ui/label';
9
- import { Badge } from './ui/badge';
10
- import { Card, CardContent } from './ui/card';
11
- import { Dialog, DialogContent, DialogHeader, DialogTitle, } from './ui/dialog';
12
- import { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle, } from './ui/alert-dialog';
13
- import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow, } from './ui/table';
6
+ import { Button } from './ui/button.js';
7
+ import { Input } from './ui/input.js';
8
+ import { Label } from './ui/label.js';
9
+ import { Badge } from './ui/badge.js';
10
+ import { Card, CardContent } from './ui/card.js';
11
+ import { Dialog, DialogContent, DialogHeader, DialogTitle, } from './ui/dialog.js';
12
+ import { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle, } from './ui/alert-dialog.js';
13
+ import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow, } from './ui/table.js';
14
14
  import { Plus, Pencil, Trash2, Loader2 } from 'lucide-react';
15
15
  import { toast } from 'sonner';
16
16
  import { createCategoriesApi, createPermissionsApi } from '../lib/rbac-api';
@@ -3,11 +3,11 @@
3
3
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
4
4
  import { useState, useCallback, Fragment } from 'react';
5
5
  import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';
6
- import { Button } from './ui/button';
7
- import { Badge } from './ui/badge';
8
- import { Card, CardContent } from './ui/card';
9
- import { Checkbox } from './ui/checkbox';
10
- import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow, } from './ui/table';
6
+ import { Button } from './ui/button.js';
7
+ import { Badge } from './ui/badge.js';
8
+ import { Card, CardContent } from './ui/card.js';
9
+ import { Checkbox } from './ui/checkbox.js';
10
+ import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow, } from './ui/table.js';
11
11
  import { Loader2, Save, Database } from 'lucide-react';
12
12
  import { toast } from 'sonner';
13
13
  import { createMatrixApi } from '../lib/rbac-api';
@@ -3,15 +3,15 @@
3
3
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
4
4
  import { useState } from 'react';
5
5
  import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';
6
- import { Button } from './ui/button';
7
- import { Input } from './ui/input';
8
- import { Label } from './ui/label';
9
- import { Badge } from './ui/badge';
10
- import { Card, CardContent } from './ui/card';
11
- import { Dialog, DialogContent, DialogHeader, DialogTitle, } from './ui/dialog';
12
- import { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle, } from './ui/alert-dialog';
13
- import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow, } from './ui/table';
14
- import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from './ui/select';
6
+ import { Button } from './ui/button.js';
7
+ import { Input } from './ui/input.js';
8
+ import { Label } from './ui/label.js';
9
+ import { Badge } from './ui/badge.js';
10
+ import { Card, CardContent } from './ui/card.js';
11
+ import { Dialog, DialogContent, DialogHeader, DialogTitle, } from './ui/dialog.js';
12
+ import { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle, } from './ui/alert-dialog.js';
13
+ import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow, } from './ui/table.js';
14
+ import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from './ui/select.js';
15
15
  import { Plus, Pencil, Trash2, Loader2 } from 'lucide-react';
16
16
  import { toast } from 'sonner';
17
17
  import { createPermissionsApi, createCategoriesApi } from '../lib/rbac-api';
@@ -2,12 +2,12 @@
2
2
  'use client';
3
3
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
4
4
  import { useState } from 'react';
5
- import { Tabs, TabsContent, TabsList, TabsTrigger } from './ui/tabs';
5
+ import { Tabs, TabsContent, TabsList, TabsTrigger } from './ui/tabs.js';
6
6
  import { Shield } from 'lucide-react';
7
- import { PermissionMatrix } from './PermissionMatrix';
8
- import { RolesManager } from './RolesManager';
9
- import { PermissionsManager } from './PermissionsManager';
10
- import { CategoriesManager } from './CategoriesManager';
7
+ import { PermissionMatrix } from './PermissionMatrix.js';
8
+ import { RolesManager } from './RolesManager.js';
9
+ import { PermissionsManager } from './PermissionsManager.js';
10
+ import { CategoriesManager } from './CategoriesManager.js';
11
11
  const defaultT = (key) => key;
12
12
  export function RBACManager({ apiBasePath = '/api', t = defaultT, systemRoles = [], roleColors, statusColors, }) {
13
13
  const [tab, setTab] = useState('matrix');
@@ -3,14 +3,14 @@
3
3
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
4
4
  import { useState } from 'react';
5
5
  import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';
6
- import { Button } from './ui/button';
7
- import { Input } from './ui/input';
8
- import { Label } from './ui/label';
9
- import { Badge } from './ui/badge';
10
- import { Card, CardContent } from './ui/card';
11
- import { Dialog, DialogContent, DialogHeader, DialogTitle, } from './ui/dialog';
12
- import { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle, } from './ui/alert-dialog';
13
- import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow, } from './ui/table';
6
+ import { Button } from './ui/button.js';
7
+ import { Input } from './ui/input.js';
8
+ import { Label } from './ui/label.js';
9
+ import { Badge } from './ui/badge.js';
10
+ import { Card, CardContent } from './ui/card.js';
11
+ import { Dialog, DialogContent, DialogHeader, DialogTitle, } from './ui/dialog.js';
12
+ import { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle, } from './ui/alert-dialog.js';
13
+ import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow, } from './ui/table.js';
14
14
  import { Plus, Pencil, Trash2, Loader2 } from 'lucide-react';
15
15
  import { toast } from 'sonner';
16
16
  import { createRolesApi } from '../lib/rbac-api';
@@ -3,16 +3,16 @@
3
3
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
4
4
  import { useState } from 'react';
5
5
  import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';
6
- import { Button } from './ui/button';
7
- import { Input } from './ui/input';
8
- import { Label } from './ui/label';
9
- import { Badge } from './ui/badge';
10
- import { Card, CardContent } from './ui/card';
11
- import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogTrigger, } from './ui/dialog';
12
- import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from './ui/select';
13
- import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow, } from './ui/table';
6
+ import { Button } from './ui/button.js';
7
+ import { Input } from './ui/input.js';
8
+ import { Label } from './ui/label.js';
9
+ import { Badge } from './ui/badge.js';
10
+ import { Card, CardContent } from './ui/card.js';
11
+ import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogTrigger, } from './ui/dialog.js';
12
+ import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from './ui/select.js';
13
+ import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow, } from './ui/table.js';
14
14
  import { Plus, Pencil, Trash2, Loader2 } from 'lucide-react';
15
- import { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle, } from './ui/alert-dialog';
15
+ import { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle, } from './ui/alert-dialog.js';
16
16
  import { toast } from 'sonner';
17
17
  import { createUsersApi } from '../lib/rbac-api';
18
18
  const defaultT = (key) => key;
@@ -14,7 +14,7 @@ var __rest = (this && this.__rest) || function (s, e) {
14
14
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
15
15
  import { AlertDialog as AlertDialogPrimitive } from "radix-ui";
16
16
  import { cn } from "../../lib/utils";
17
- import { Button } from "./button";
17
+ import { Button } from "./button.js";
18
18
  function AlertDialog(_a) {
19
19
  var props = __rest(_a, []);
20
20
  return _jsx(AlertDialogPrimitive.Root, Object.assign({ "data-slot": "alert-dialog" }, props));
@@ -15,7 +15,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
15
15
  import { XIcon } from "lucide-react";
16
16
  import { Dialog as DialogPrimitive } from "radix-ui";
17
17
  import { cn } from "../../lib/utils";
18
- import { Button } from "./button";
18
+ import { Button } from "./button.js";
19
19
  function Dialog(_a) {
20
20
  var props = __rest(_a, []);
21
21
  return _jsx(DialogPrimitive.Root, Object.assign({ "data-slot": "dialog" }, props));
package/dist/index.d.ts CHANGED
@@ -2,6 +2,7 @@ export { UserSchema } from './schemas/user.schema';
2
2
  export { RoleSchema } from './schemas/role.schema';
3
3
  export { PermissionSchema } from './schemas/permission.schema';
4
4
  export { PermissionCategorySchema } from './schemas/permission-category.schema';
5
+ export { AccountSchema } from './schemas/account.schema';
5
6
  export { rbacMenuContribution } from './lib/menu';
6
7
  export { default as UsersPage } from './pages/UsersPage';
7
8
  export { default as RolesPage } from './pages/RolesPage';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AAC9D,OAAO,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAA;AAG/E,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAGjD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,mBAAmB,CAAA;AACxD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAGxD,OAAO,EAAE,CAAC,IAAI,KAAK,EAAE,MAAM,YAAY,CAAA;AAGvC,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAA;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAA;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAA;AAGhE,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AAGxE,OAAO,EACL,cAAc,EACd,cAAc,EACd,oBAAoB,EACpB,eAAe,EACf,mBAAmB,GACpB,MAAM,gBAAgB,CAAA;AAGvB,YAAY,EACV,OAAO,EACP,OAAO,EACP,aAAa,EACb,qBAAqB,EACrB,IAAI,EACJ,UAAU,EACV,QAAQ,EACR,cAAc,EACd,YAAY,EACZ,UAAU,EACV,UAAU,EACV,oBAAoB,EACpB,cAAc,EACd,kBAAkB,GACnB,MAAM,SAAS,CAAA;AAGhB,YAAY,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AACrD,YAAY,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAA;AAC1D,YAAY,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AACrD,YAAY,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAA;AAC1D,YAAY,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAA;AACjE,YAAY,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAA;AACtE,YAAY,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AACvD,YAAY,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAA;AAC/D,YAAY,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAA;AACpE,YAAY,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AAC9D,OAAO,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAA;AAC/E,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AAGxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAGjD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,mBAAmB,CAAA;AACxD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAGxD,OAAO,EAAE,CAAC,IAAI,KAAK,EAAE,MAAM,YAAY,CAAA;AAGvC,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAA;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAA;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAA;AAGhE,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AAGxE,OAAO,EACL,cAAc,EACd,cAAc,EACd,oBAAoB,EACpB,eAAe,EACf,mBAAmB,GACpB,MAAM,gBAAgB,CAAA;AAGvB,YAAY,EACV,OAAO,EACP,OAAO,EACP,aAAa,EACb,qBAAqB,EACrB,IAAI,EACJ,UAAU,EACV,QAAQ,EACR,cAAc,EACd,YAAY,EACZ,UAAU,EACV,UAAU,EACV,oBAAoB,EACpB,cAAc,EACd,kBAAkB,GACnB,MAAM,SAAS,CAAA;AAGhB,YAAY,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AACrD,YAAY,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAA;AAC1D,YAAY,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AACrD,YAAY,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAA;AAC1D,YAAY,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAA;AACjE,YAAY,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAA;AACtE,YAAY,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AACvD,YAAY,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAA;AAC/D,YAAY,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAA;AACpE,YAAY,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA"}
package/dist/index.js CHANGED
@@ -2,26 +2,27 @@
2
2
  // @mostajs/rbac — Client-safe barrel (NO ORM imports)
3
3
  // For server-side code (repos, seed, permissions-server), use '@mostajs/rbac/server'
4
4
  // Schemas (pure data definitions — no ORM dependency)
5
- export { UserSchema } from './schemas/user.schema';
6
- export { RoleSchema } from './schemas/role.schema';
7
- export { PermissionSchema } from './schemas/permission.schema';
8
- export { PermissionCategorySchema } from './schemas/permission-category.schema';
5
+ export { UserSchema } from './schemas/user.schema.js';
6
+ export { RoleSchema } from './schemas/role.schema.js';
7
+ export { PermissionSchema } from './schemas/permission.schema.js';
8
+ export { PermissionCategorySchema } from './schemas/permission-category.schema.js';
9
+ export { AccountSchema } from './schemas/account.schema.js';
9
10
  // Menu contribution
10
- export { rbacMenuContribution } from './lib/menu';
11
+ export { rbacMenuContribution } from './lib/menu.js';
11
12
  // Pages (client-side, registered via PageRegistration)
12
- export { default as UsersPage } from './pages/UsersPage';
13
- export { default as RolesPage } from './pages/RolesPage';
13
+ export { default as UsersPage } from './pages/UsersPage.js';
14
+ export { default as RolesPage } from './pages/RolesPage.js';
14
15
  // i18n
15
- export { t as rbacT } from './lib/i18n';
16
+ export { t as rbacT } from './lib/i18n.js';
16
17
  // Components (client-side)
17
- export { UsersManager } from './components/UsersManager';
18
- export { RBACManager } from './components/RBACManager';
19
- export { RolesManager } from './components/RolesManager';
20
- export { PermissionsManager } from './components/PermissionsManager';
21
- export { CategoriesManager } from './components/CategoriesManager';
22
- export { PermissionMatrix } from './components/PermissionMatrix';
18
+ export { UsersManager } from './components/UsersManager.js';
19
+ export { RBACManager } from './components/RBACManager.js';
20
+ export { RolesManager } from './components/RolesManager.js';
21
+ export { PermissionsManager } from './components/PermissionsManager.js';
22
+ export { CategoriesManager } from './components/CategoriesManager.js';
23
+ export { PermissionMatrix } from './components/PermissionMatrix.js';
23
24
  // Permission matching helpers
24
- export { hasPermission, matchesPermission } from './helpers/permissions';
25
+ export { hasPermission, matchesPermission } from './helpers/permissions.js';
25
26
  // API helpers (client-side fetch wrappers — no server deps)
26
- export { createUsersApi, createRolesApi, createPermissionsApi, createMatrixApi, createCategoriesApi, } from './lib/rbac-api';
27
+ export { createUsersApi, createRolesApi, createPermissionsApi, createMatrixApi, createCategoriesApi, } from './lib/rbac-api.js';
27
28
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,sDAAsD;AACtD,qFAAqF;AAErF,sDAAsD;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AAC9D,OAAO,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAA;AAE/E,oBAAoB;AACpB,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAEjD,uDAAuD;AACvD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,mBAAmB,CAAA;AACxD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAExD,OAAO;AACP,OAAO,EAAE,CAAC,IAAI,KAAK,EAAE,MAAM,YAAY,CAAA;AAEvC,2BAA2B;AAC3B,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAA;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAA;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAA;AAEhE,8BAA8B;AAC9B,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AAExE,4DAA4D;AAC5D,OAAO,EACL,cAAc,EACd,cAAc,EACd,oBAAoB,EACpB,eAAe,EACf,mBAAmB,GACpB,MAAM,gBAAgB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,sDAAsD;AACtD,qFAAqF;AAErF,sDAAsD;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AAC9D,OAAO,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAA;AAC/E,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AAExD,oBAAoB;AACpB,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAEjD,uDAAuD;AACvD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,mBAAmB,CAAA;AACxD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAExD,OAAO;AACP,OAAO,EAAE,CAAC,IAAI,KAAK,EAAE,MAAM,YAAY,CAAA;AAEvC,2BAA2B;AAC3B,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAA;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAA;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAA;AAEhE,8BAA8B;AAC9B,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AAExE,4DAA4D;AAC5D,OAAO,EACL,cAAc,EACd,cAAc,EACd,oBAAoB,EACpB,eAAe,EACf,mBAAmB,GACpB,MAAM,gBAAgB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"module-info.d.ts","sourceRoot":"","sources":["../../lib/module-info.ts"],"names":[],"mappings":"AASA,8EAA8E;AAC9E,wBAAgB,UAAU,0CAEzB;AAED,0CAA0C;AAC1C,eAAO,MAAM,UAAU;;;;;;IAMrB,gEAAgE;qBACzC,GAAG;;;;;IAQ1B,qDAAqD;2BACxB;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE;CAItG,CAAA"}
1
+ {"version":3,"file":"module-info.d.ts","sourceRoot":"","sources":["../../lib/module-info.ts"],"names":[],"mappings":"AAUA,8EAA8E;AAC9E,wBAAgB,UAAU,0CAEzB;AAED,0CAA0C;AAC1C,eAAO,MAAM,UAAU;;;;;;IAMrB,gEAAgE;qBACzC,GAAG;;;;;IAQ1B,qDAAqD;2BACxB;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE;CAItG,CAAA"}
@@ -5,9 +5,10 @@ import { UserSchema } from '../schemas/user.schema.js';
5
5
  import { RoleSchema } from '../schemas/role.schema.js';
6
6
  import { PermissionSchema } from '../schemas/permission.schema.js';
7
7
  import { PermissionCategorySchema } from '../schemas/permission-category.schema.js';
8
+ import { AccountSchema } from '../schemas/account.schema.js';
8
9
  /** All schemas provided by this module (plain objects — JSON-serializable) */
9
10
  export function getSchemas() {
10
- return [UserSchema, RoleSchema, PermissionSchema, PermissionCategorySchema];
11
+ return [UserSchema, RoleSchema, PermissionSchema, PermissionCategorySchema, AccountSchema];
11
12
  }
12
13
  /** Module metadata for setup discovery */
13
14
  export const moduleInfo = {
@@ -1 +1 @@
1
- {"version":3,"file":"module-info.js","sourceRoot":"","sources":["../../lib/module-info.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,oEAAoE;AACpE,wCAAwC;AAExC,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAA;AAClE,OAAO,EAAE,wBAAwB,EAAE,MAAM,0CAA0C,CAAA;AAEnF,8EAA8E;AAC9E,MAAM,UAAU,UAAU;IACxB,OAAO,CAAC,UAAU,EAAE,UAAU,EAAE,gBAAgB,EAAE,wBAAwB,CAAC,CAAA;AAC7E,CAAC;AAED,0CAA0C;AAC1C,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,IAAI,EAAE,MAAM;IACZ,OAAO,EAAE,OAAO;IAChB,KAAK,EAAE,qBAAqB;IAC5B,WAAW,EAAE,uDAAuD;IACpE,OAAO,EAAE,UAAU;IACnB,gEAAgE;IAChE,IAAI,EAAE,KAAK,EAAE,OAAa,EAAE,EAAE;QAC5B,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAA;QACnD,IAAI,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,UAAU,MAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW,CAAA,KAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK,CAAA,EAAE,CAAC;YAClE,OAAO,QAAQ,CAAC,OAAO,CAAC,CAAA;QAC1B,CAAC;QACD,+BAA+B;QAC/B,OAAO,EAAE,aAAa,EAAE,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,CAAA;IAC/D,CAAC;IACD,qDAAqD;IACrD,WAAW,EAAE,KAAK,EAAE,OAAiF,EAAE,EAAE;QACvG,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAA;QACzD,OAAO,WAAW,CAAC,OAAO,CAAC,CAAA;IAC7B,CAAC;CACF,CAAA"}
1
+ {"version":3,"file":"module-info.js","sourceRoot":"","sources":["../../lib/module-info.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,oEAAoE;AACpE,wCAAwC;AAExC,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAA;AAClE,OAAO,EAAE,wBAAwB,EAAE,MAAM,0CAA0C,CAAA;AACnF,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAA;AAE5D,8EAA8E;AAC9E,MAAM,UAAU,UAAU;IACxB,OAAO,CAAC,UAAU,EAAE,UAAU,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,aAAa,CAAC,CAAA;AAC5F,CAAC;AAED,0CAA0C;AAC1C,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,IAAI,EAAE,MAAM;IACZ,OAAO,EAAE,OAAO;IAChB,KAAK,EAAE,qBAAqB;IAC5B,WAAW,EAAE,uDAAuD;IACpE,OAAO,EAAE,UAAU;IACnB,gEAAgE;IAChE,IAAI,EAAE,KAAK,EAAE,OAAa,EAAE,EAAE;QAC5B,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAA;QACnD,IAAI,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,UAAU,MAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW,CAAA,KAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK,CAAA,EAAE,CAAC;YAClE,OAAO,QAAQ,CAAC,OAAO,CAAC,CAAA;QAC1B,CAAC;QACD,+BAA+B;QAC/B,OAAO,EAAE,aAAa,EAAE,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,CAAA;IAC/D,CAAC;IACD,qDAAqD;IACrD,WAAW,EAAE,KAAK,EAAE,OAAiF,EAAE,EAAE;QACvG,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAA;QACzD,OAAO,WAAW,CAAC,OAAO,CAAC,CAAA;IAC7B,CAAC;CACF,CAAA"}
@@ -0,0 +1,11 @@
1
+ import { BaseRepository } from '@mostajs/orm';
2
+ import type { IDialect } from '@mostajs/orm';
3
+ import type { AccountDTO } from '../types/index';
4
+ export declare class AccountRepository extends BaseRepository<AccountDTO> {
5
+ constructor(dialect: IDialect);
6
+ /** Find the account whose primary owner is the given user */
7
+ findByOwner(userId: string): Promise<AccountDTO | null>;
8
+ /** Find the unique system account by type — useful for the 'trial' shared playground */
9
+ findByType(type: string): Promise<AccountDTO | null>;
10
+ }
11
+ //# sourceMappingURL=account.repository.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"account.repository.d.ts","sourceRoot":"","sources":["../../repositories/account.repository.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAE7C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAC5C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAEhD,qBAAa,iBAAkB,SAAQ,cAAc,CAAC,UAAU,CAAC;gBACnD,OAAO,EAAE,QAAQ;IAI7B,6DAA6D;IACvD,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAI7D,wFAAwF;IAClF,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;CAG3D"}
@@ -0,0 +1,18 @@
1
+ // @mostajs/rbac — AccountRepository
2
+ // Author: Dr Hamid MADANI drmdh@msn.com
3
+ import { BaseRepository } from '@mostajs/orm';
4
+ import { AccountSchema } from '../schemas/account.schema';
5
+ export class AccountRepository extends BaseRepository {
6
+ constructor(dialect) {
7
+ super(AccountSchema, dialect);
8
+ }
9
+ /** Find the account whose primary owner is the given user */
10
+ async findByOwner(userId) {
11
+ return this.findOne({ owner: userId });
12
+ }
13
+ /** Find the unique system account by type — useful for the 'trial' shared playground */
14
+ async findByType(type) {
15
+ return this.findOne({ type });
16
+ }
17
+ }
18
+ //# sourceMappingURL=account.repository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"account.repository.js","sourceRoot":"","sources":["../../repositories/account.repository.ts"],"names":[],"mappings":"AAAA,oCAAoC;AACpC,wCAAwC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAIzD,MAAM,OAAO,iBAAkB,SAAQ,cAA0B;IAC/D,YAAY,OAAiB;QAC3B,KAAK,CAAC,aAAa,EAAE,OAAO,CAAC,CAAA;IAC/B,CAAC;IAED,6DAA6D;IAC7D,KAAK,CAAC,WAAW,CAAC,MAAc;QAC9B,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAA;IACxC,CAAC;IAED,wFAAwF;IACxF,KAAK,CAAC,UAAU,CAAC,IAAY;QAC3B,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,CAAA;IAC/B,CAAC;CACF"}
@@ -0,0 +1,3 @@
1
+ import type { EntitySchema } from '@mostajs/orm';
2
+ export declare const AccountSchema: EntitySchema;
3
+ //# sourceMappingURL=account.schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"account.schema.d.ts","sourceRoot":"","sources":["../../schemas/account.schema.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAEhD,eAAO,MAAM,aAAa,EAAE,YAuB3B,CAAA"}
@@ -0,0 +1,27 @@
1
+ // @mostajs/rbac — Account Entity Schema
2
+ // Multi-tenant container referenced as target:'Account' by ApiKey, Project,
3
+ // Subscription, Invoice, UsageLog (across mosta-api-keys, mosta-project-life,
4
+ // mosta-subscriptions-plan).
5
+ // Author: Dr Hamid MADANI drmdh@msn.com
6
+ export const AccountSchema = {
7
+ name: 'Account',
8
+ collection: 'accounts',
9
+ timestamps: true,
10
+ fields: {
11
+ name: { type: 'string', required: true, trim: true },
12
+ type: { type: 'string', enum: ['personal', 'organization', 'trial', 'system'], default: 'personal' },
13
+ plan: { type: 'string', default: 'free' },
14
+ status: { type: 'string', enum: ['active', 'suspended', 'deleted'], default: 'active' },
15
+ stripeCustomerId: { type: 'string' },
16
+ metadata: { type: 'json' },
17
+ },
18
+ relations: {
19
+ owner: { type: 'many-to-one', target: 'User', required: true },
20
+ members: { type: 'many-to-many', target: 'User', through: 'account_members' },
21
+ },
22
+ indexes: [
23
+ { fields: { type: 'asc' } },
24
+ { fields: { status: 'asc' } },
25
+ ],
26
+ };
27
+ //# sourceMappingURL=account.schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"account.schema.js","sourceRoot":"","sources":["../../schemas/account.schema.ts"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,4EAA4E;AAC5E,8EAA8E;AAC9E,6BAA6B;AAC7B,wCAAwC;AAIxC,MAAM,CAAC,MAAM,aAAa,GAAiB;IACzC,IAAI,EAAE,SAAS;IACf,UAAU,EAAE,UAAU;IACtB,UAAU,EAAE,IAAI;IAEhB,MAAM,EAAE;QACN,IAAI,EAAc,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;QAChE,IAAI,EAAc,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,UAAU,EAAE,cAAc,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE;QAChH,IAAI,EAAc,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE;QACrD,MAAM,EAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,WAAW,EAAE,SAAS,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE;QACjG,gBAAgB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QACpC,QAAQ,EAAU,EAAE,IAAI,EAAE,MAAM,EAAE;KACnC;IAED,SAAS,EAAE;QACT,KAAK,EAAI,EAAE,IAAI,EAAE,aAAa,EAAG,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;QACjE,OAAO,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,EAAE;KAC9E;IAED,OAAO,EAAE;QACP,EAAE,MAAM,EAAE,EAAE,IAAI,EAAI,KAAK,EAAE,EAAE;QAC7B,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE;KAC9B;CACF,CAAA"}
@@ -0,0 +1,43 @@
1
+ import type { SeedRBACOptions } from '../lib/rbac-seed';
2
+ export declare const OCTONET_RBAC_SEED: SeedRBACOptions;
3
+ /** Permission codes referenced by Octonet code paths (typed lookups). */
4
+ export declare const OCTONET_PERMS: {
5
+ readonly net: {
6
+ readonly healthRead: "net:health:read";
7
+ readonly metricsRead: "net:metrics:read";
8
+ };
9
+ readonly project: {
10
+ readonly list: "project:list";
11
+ readonly read: "project:read";
12
+ readonly create: "project:create";
13
+ readonly update: "project:update";
14
+ readonly delete: "project:delete";
15
+ readonly write: "project:write";
16
+ readonly readAny: "project:read:any";
17
+ readonly writeAny: "project:write:any";
18
+ };
19
+ readonly schema: {
20
+ readonly read: "schema:read";
21
+ readonly upload: "schema:upload";
22
+ readonly apply: "schema:apply";
23
+ readonly compare: "schema:compare";
24
+ };
25
+ readonly apikey: {
26
+ readonly list: "apikey:list";
27
+ readonly create: "apikey:create";
28
+ readonly revoke: "apikey:revoke";
29
+ readonly admin: "apikey:admin";
30
+ };
31
+ readonly user: {
32
+ readonly readSelf: "user:read";
33
+ readonly updateSelf: "user:update";
34
+ readonly list: "user:list";
35
+ readonly create: "user:create";
36
+ readonly updateAny: "user:update:any";
37
+ readonly delete: "user:delete";
38
+ };
39
+ readonly admin: {
40
+ readonly bypass: "admin:bypass";
41
+ };
42
+ };
43
+ //# sourceMappingURL=octonet.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"octonet.d.ts","sourceRoot":"","sources":["../../seeds/octonet.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAoGvD,eAAO,MAAM,iBAAiB,EAAE,eAI/B,CAAA;AAED,yEAAyE;AACzE,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAchB,CAAA"}
@@ -0,0 +1,119 @@
1
+ // @mostajs/rbac — Octonet RBAC seed (categories, permissions, roles)
2
+ //
3
+ // Catalogue de permissions du transport @mostajs/net (Octonet) — vit ici plutôt
4
+ // que dans `mosta-net` pour être réutilisable par tout consommateur (octocloud,
5
+ // admin tools tierces, autres serveurs basés sur la même surface).
6
+ //
7
+ // Usage :
8
+ // import { OCTONET_RBAC_SEED, seedRBAC } from '@mostajs/rbac/server'
9
+ // await seedRBAC(OCTONET_RBAC_SEED)
10
+ //
11
+ // Naming convention : <category>:<resource>:<action> — ex. project:list,
12
+ // schema:upload. Codes alignés sur la matrice (apikey × ressource × action)
13
+ // des routes Octonet.
14
+ //
15
+ // Author: Dr Hamid MADANI <drmdh@msn.com>
16
+ // ──────────────────────────────────────────────────────────────────
17
+ // Catégories
18
+ // ──────────────────────────────────────────────────────────────────
19
+ const CATEGORIES = [
20
+ { name: 'net', label: 'Network', description: 'Server infrastructure (health, metrics)', icon: 'activity', order: 10, system: true },
21
+ { name: 'project', label: 'Projects', description: 'Multi-tenant projects (CRUD)', icon: 'folder', order: 20, system: true },
22
+ { name: 'schema', label: 'Schemas', description: 'Entity schema management', icon: 'database', order: 30, system: true },
23
+ { name: 'apikey', label: 'API keys', description: 'API key issuance and revocation', icon: 'key', order: 40, system: true },
24
+ { name: 'user', label: 'Users', description: 'User and account management', icon: 'users', order: 50, system: true },
25
+ { name: 'admin', label: 'Administration', description: 'Privileged superuser actions', icon: 'shield', order: 60, system: true },
26
+ ];
27
+ // ──────────────────────────────────────────────────────────────────
28
+ // Permissions (fine-grained)
29
+ // ──────────────────────────────────────────────────────────────────
30
+ const PERMISSIONS = [
31
+ // net — infrastructure
32
+ { code: 'net:health:read', name: 'Read health probe', description: 'GET /health', category: 'net' },
33
+ { code: 'net:metrics:read', name: 'Read metrics', description: 'GET /metrics', category: 'net' },
34
+ // project — multi-tenant projects
35
+ { code: 'project:list', name: 'List projects', description: 'List projects owned + visibility:public', category: 'project' },
36
+ { code: 'project:read', name: 'Read project', description: 'Read project metadata', category: 'project' },
37
+ { code: 'project:create', name: 'Create project', description: 'POST /api/projects', category: 'project' },
38
+ { code: 'project:update', name: 'Update project', description: 'PATCH /api/projects/:slug', category: 'project' },
39
+ { code: 'project:delete', name: 'Delete project', description: 'DELETE /api/projects/:slug', category: 'project' },
40
+ { code: 'project:write', name: 'CRUD entities', description: 'POST/PUT/DELETE /api/v1/:project/:entity', category: 'project' },
41
+ { code: 'project:read:any', name: 'Read any project', description: 'Bypass owner filter (admin)', category: 'project' },
42
+ { code: 'project:write:any', name: 'Write any project', description: 'Bypass owner filter (admin)', category: 'project' },
43
+ // schema — entity schema lifecycle
44
+ { code: 'schema:read', name: 'Read schemas', description: 'GET /api/schemas-config', category: 'schema' },
45
+ { code: 'schema:upload', name: 'Upload schemas', description: 'POST /api/upload-schemas-json', category: 'schema' },
46
+ { code: 'schema:apply', name: 'Apply schema', description: 'POST /api/apply-schema', category: 'schema' },
47
+ { code: 'schema:compare', name: 'Compare schemas', description: 'POST /api/compare-schema', category: 'schema' },
48
+ // apikey — issuance & revocation
49
+ { code: 'apikey:list', name: 'List own apikeys', description: 'List api keys for current account', category: 'apikey' },
50
+ { code: 'apikey:create', name: 'Issue apikey', description: 'POST /api/api-keys', category: 'apikey' },
51
+ { code: 'apikey:revoke', name: 'Revoke own apikey', description: 'DELETE /api/api-keys/:id', category: 'apikey' },
52
+ { code: 'apikey:admin', name: 'Manage all apikeys', description: 'Cross-account key management (admin)', category: 'apikey' },
53
+ // user — identity / account
54
+ { code: 'user:read', name: 'Read own profile', description: 'GET /api/users/me', category: 'user' },
55
+ { code: 'user:update', name: 'Update own profile', description: 'PATCH /api/users/me', category: 'user' },
56
+ { code: 'user:list', name: 'List users', description: 'GET /api/users (admin)', category: 'user' },
57
+ { code: 'user:create', name: 'Create user', description: 'POST /api/users (admin)', category: 'user' },
58
+ { code: 'user:update:any', name: 'Update any user', description: 'PATCH /api/users/:id (admin)', category: 'user' },
59
+ { code: 'user:delete', name: 'Delete user', description: 'DELETE /api/users/:id (admin)', category: 'user' },
60
+ // admin — superuser
61
+ { code: 'admin:bypass', name: 'Admin bypass', description: 'Skip all owner/visibility filters', category: 'admin' },
62
+ ];
63
+ // ──────────────────────────────────────────────────────────────────
64
+ // Rôles + matrice par défaut
65
+ // ──────────────────────────────────────────────────────────────────
66
+ const SUBSCRIBER_PERMS = [
67
+ 'net:health:read',
68
+ 'project:list', 'project:read', 'project:create', 'project:update', 'project:delete', 'project:write',
69
+ 'schema:read', 'schema:upload', 'schema:apply', 'schema:compare',
70
+ 'apikey:list', 'apikey:create', 'apikey:revoke',
71
+ 'user:read', 'user:update',
72
+ ];
73
+ const TRIAL_PERMS = [
74
+ 'net:health:read',
75
+ 'project:list', 'project:read', 'project:write',
76
+ 'schema:read',
77
+ 'apikey:list',
78
+ 'user:read',
79
+ ];
80
+ const PUBLIC_PERMS = [
81
+ 'net:health:read',
82
+ 'project:list', 'project:read',
83
+ 'schema:read',
84
+ ];
85
+ const ADMIN_PERMS = [
86
+ // Admin reçoit toutes les permissions du catalogue
87
+ ...PERMISSIONS.map(p => p.code),
88
+ ];
89
+ const ROLES = {
90
+ admin: { name: 'admin', description: 'Full administrative access', system: true, permissions: ADMIN_PERMS },
91
+ subscriber: { name: 'subscriber', description: 'Registered tenant (T2/T3) — own resources', system: true, permissions: SUBSCRIBER_PERMS },
92
+ trial: { name: 'trial', description: 'Sandbox tenant (T1) — limited, ephemeral', system: true, permissions: TRIAL_PERMS },
93
+ public: { name: 'public', description: 'Anonymous read-only on public projects', system: true, permissions: PUBLIC_PERMS },
94
+ };
95
+ // ──────────────────────────────────────────────────────────────────
96
+ // Export — directly consumable by seedRBAC()
97
+ // ──────────────────────────────────────────────────────────────────
98
+ export const OCTONET_RBAC_SEED = {
99
+ categories: CATEGORIES,
100
+ permissions: PERMISSIONS,
101
+ roles: ROLES,
102
+ };
103
+ /** Permission codes referenced by Octonet code paths (typed lookups). */
104
+ export const OCTONET_PERMS = {
105
+ net: { healthRead: 'net:health:read', metricsRead: 'net:metrics:read' },
106
+ project: {
107
+ list: 'project:list', read: 'project:read', create: 'project:create',
108
+ update: 'project:update', delete: 'project:delete', write: 'project:write',
109
+ readAny: 'project:read:any', writeAny: 'project:write:any',
110
+ },
111
+ schema: { read: 'schema:read', upload: 'schema:upload', apply: 'schema:apply', compare: 'schema:compare' },
112
+ apikey: { list: 'apikey:list', create: 'apikey:create', revoke: 'apikey:revoke', admin: 'apikey:admin' },
113
+ user: {
114
+ readSelf: 'user:read', updateSelf: 'user:update',
115
+ list: 'user:list', create: 'user:create', updateAny: 'user:update:any', delete: 'user:delete',
116
+ },
117
+ admin: { bypass: 'admin:bypass' },
118
+ };
119
+ //# sourceMappingURL=octonet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"octonet.js","sourceRoot":"","sources":["../../seeds/octonet.ts"],"names":[],"mappings":"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"}
package/dist/server.d.ts CHANGED
@@ -2,8 +2,10 @@ export { UserRepository } from './repositories/user.repository';
2
2
  export { RoleRepository } from './repositories/role.repository';
3
3
  export { PermissionRepository } from './repositories/permission.repository';
4
4
  export { PermissionCategoryRepository } from './repositories/permission-category.repository';
5
+ export { AccountRepository } from './repositories/account.repository';
5
6
  export { seedRBAC } from './lib/rbac-seed';
6
7
  export type { SeedRBACOptions } from './lib/rbac-seed';
8
+ export { OCTONET_RBAC_SEED, OCTONET_PERMS } from './seeds/octonet';
7
9
  export { hasPermission, matchesPermission } from './helpers/permissions';
8
10
  export { createAdmin } from './lib/create-admin';
9
11
  export type { CreateAdminOptions, CreateAdminResult } from './lib/create-admin';
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../server.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAA;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAA;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAA;AAC3E,OAAO,EAAE,4BAA4B,EAAE,MAAM,+CAA+C,CAAA;AAG5F,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAC1C,YAAY,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAGtD,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AAGxE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAChD,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAG/E,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAG1D,OAAO,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAA;AAGtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAA;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAA;AACrD,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAA;AAC5D,OAAO,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAA;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAClD,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAA;AAC1D,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAA;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAG9C,YAAY,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AACrD,YAAY,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAA;AAC1D,YAAY,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AACrD,YAAY,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAA;AAC1D,YAAY,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAA;AACjE,YAAY,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAA;AACtE,YAAY,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AACvD,YAAY,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAA;AAC/D,YAAY,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAA;AACpE,YAAY,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../server.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAA;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAA;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAA;AAC3E,OAAO,EAAE,4BAA4B,EAAE,MAAM,+CAA+C,CAAA;AAC5F,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAA;AAGrE,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAC1C,YAAY,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAGtD,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAGlE,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AAGxE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAChD,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAG/E,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAG1D,OAAO,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAA;AAGtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAA;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAA;AACrD,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAA;AAC5D,OAAO,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAA;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAClD,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAA;AAC1D,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAA;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAG9C,YAAY,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AACrD,YAAY,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAA;AAC1D,YAAY,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AACrD,YAAY,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAA;AAC1D,YAAY,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAA;AACjE,YAAY,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAA;AACtE,YAAY,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AACvD,YAAY,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAA;AAC/D,YAAY,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAA;AACpE,YAAY,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA"}
package/dist/server.js CHANGED
@@ -2,29 +2,32 @@
2
2
  // @mostajs/rbac/server — Server-side exports (ORM-dependent)
3
3
  // Import from '@mostajs/rbac/server' in API routes and server code
4
4
  // Repositories (depend on @mostajs/orm)
5
- export { UserRepository } from './repositories/user.repository';
6
- export { RoleRepository } from './repositories/role.repository';
7
- export { PermissionRepository } from './repositories/permission.repository';
8
- export { PermissionCategoryRepository } from './repositories/permission-category.repository';
5
+ export { UserRepository } from './repositories/user.repository.js';
6
+ export { RoleRepository } from './repositories/role.repository.js';
7
+ export { PermissionRepository } from './repositories/permission.repository.js';
8
+ export { PermissionCategoryRepository } from './repositories/permission-category.repository.js';
9
+ export { AccountRepository } from './repositories/account.repository.js';
9
10
  // RBAC seed (depends on repos → ORM)
10
- export { seedRBAC } from './lib/rbac-seed';
11
+ export { seedRBAC } from './lib/rbac-seed.js';
12
+ // Pre-built RBAC seeds (categories + permissions + roles ready to apply)
13
+ export { OCTONET_RBAC_SEED, OCTONET_PERMS } from './seeds/octonet.js';
11
14
  // Permission matching helpers
12
- export { hasPermission, matchesPermission } from './helpers/permissions';
15
+ export { hasPermission, matchesPermission } from './helpers/permissions.js';
13
16
  // Create admin (depends on repos → ORM + bcrypt)
14
- export { createAdmin } from './lib/create-admin';
17
+ export { createAdmin } from './lib/create-admin.js';
15
18
  // Module info (schemas, seeds, metadata — for setup discovery)
16
- export { getSchemas, moduleInfo } from './lib/module-info';
19
+ export { getSchemas, moduleInfo } from './lib/module-info.js';
17
20
  // Server-side permission DB lookup (depends on repos → ORM)
18
- export { getPermissionsForRoleFromDB } from './lib/permissions-server';
21
+ export { getPermissionsForRoleFromDB } from './lib/permissions-server.js';
19
22
  // API handler factories
20
- export { createUsersHandler } from './api/users';
21
- export { createUsersIdHandler } from './api/users-id';
22
- export { createRolesHandler } from './api/roles';
23
- export { createRolesIdHandler } from './api/roles-id';
24
- export { createPermissionsHandler } from './api/permissions';
25
- export { createPermissionsIdHandler } from './api/permissions-id';
26
- export { createMatrixHandler } from './api/matrix';
27
- export { createCategoriesHandler } from './api/categories';
28
- export { createCategoriesIdHandler } from './api/categories-id';
29
- export { createSeedHandler } from './api/seed';
23
+ export { createUsersHandler } from './api/users.js';
24
+ export { createUsersIdHandler } from './api/users-id.js';
25
+ export { createRolesHandler } from './api/roles.js';
26
+ export { createRolesIdHandler } from './api/roles-id.js';
27
+ export { createPermissionsHandler } from './api/permissions.js';
28
+ export { createPermissionsIdHandler } from './api/permissions-id.js';
29
+ export { createMatrixHandler } from './api/matrix.js';
30
+ export { createCategoriesHandler } from './api/categories.js';
31
+ export { createCategoriesIdHandler } from './api/categories-id.js';
32
+ export { createSeedHandler } from './api/seed.js';
30
33
  //# sourceMappingURL=server.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../server.ts"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,6DAA6D;AAC7D,mEAAmE;AAEnE,wCAAwC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAA;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAA;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAA;AAC3E,OAAO,EAAE,4BAA4B,EAAE,MAAM,+CAA+C,CAAA;AAE5F,qCAAqC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAG1C,8BAA8B;AAC9B,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AAExE,iDAAiD;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAGhD,+DAA+D;AAC/D,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAE1D,4DAA4D;AAC5D,OAAO,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAA;AAEtE,wBAAwB;AACxB,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAA;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAA;AACrD,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAA;AAC5D,OAAO,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAA;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAClD,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAA;AAC1D,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAA;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../server.ts"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,6DAA6D;AAC7D,mEAAmE;AAEnE,wCAAwC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAA;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAA;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAA;AAC3E,OAAO,EAAE,4BAA4B,EAAE,MAAM,+CAA+C,CAAA;AAC5F,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAA;AAErE,qCAAqC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAG1C,yEAAyE;AACzE,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAElE,8BAA8B;AAC9B,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AAExE,iDAAiD;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAGhD,+DAA+D;AAC/D,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAE1D,4DAA4D;AAC5D,OAAO,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAA;AAEtE,wBAAwB;AACxB,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAA;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAA;AACrD,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAA;AAC5D,OAAO,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAA;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAClD,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAA;AAC1D,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAA;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA"}
@@ -38,6 +38,21 @@ export interface PermissionCategoryDTO {
38
38
  createdAt: string;
39
39
  updatedAt: string;
40
40
  }
41
+ export interface AccountDTO {
42
+ id: string;
43
+ name: string;
44
+ type: 'personal' | 'organization' | 'trial' | 'system';
45
+ plan: string;
46
+ status: 'active' | 'suspended' | 'deleted';
47
+ stripeCustomerId?: string;
48
+ metadata?: Record<string, any>;
49
+ owner: string | {
50
+ id: string;
51
+ };
52
+ members?: any[];
53
+ createdAt: string;
54
+ updatedAt: string;
55
+ }
41
56
  export interface User {
42
57
  id: string;
43
58
  email: string;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../types/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../types/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,9 +1,10 @@
1
1
  {
2
2
  "name": "@mostajs/rbac",
3
- "version": "2.2.2",
3
+ "version": "2.3.1",
4
4
  "description": "RBAC — User/Role/Permission schemas, repos, management UI, API handlers",
5
5
  "author": "Dr Hamid MADANI <drmdh@msn.com>",
6
6
  "license": "AGPL-3.0-or-later",
7
+ "type": "module",
7
8
  "main": "dist/index.js",
8
9
  "types": "dist/index.d.ts",
9
10
  "exports": {
@@ -187,7 +188,8 @@
187
188
  "node": ">=18.0.0"
188
189
  },
189
190
  "scripts": {
190
- "build": "tsc",
191
+ "build": "tsc && npm run fix-esm",
192
+ "fix-esm": "find dist -name '*.js' -exec sed -i -E \"s|from '(\\\\./[^']+)'(;?)|from '\\\\1.js'\\\\2|g; s|from \\\"(\\\\./[^\\\"]+)\\\"(;?)|from \\\"\\\\1.js\\\"\\\\2|g\" {} \\; && find dist -name '*.js' -exec sed -i -E \"s|\\\\.js\\\\.js|.js|g\" {} \\;",
191
193
  "prepublishOnly": "npm run build"
192
194
  },
193
195
  "dependencies": {