create-mantiq 0.6.0 → 0.7.0

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.
Files changed (2) hide show
  1. package/package.json +1 -1
  2. package/src/templates.ts +49 -7
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-mantiq",
3
- "version": "0.6.0",
3
+ "version": "0.7.0",
4
4
  "description": "Scaffold a new MantiqJS application",
5
5
  "type": "module",
6
6
  "license": "MIT",
package/src/templates.ts CHANGED
@@ -20,9 +20,9 @@ export function getTemplates(ctx: TemplateContext): Record<string, string> {
20
20
  mantiq: 'bun run mantiq.ts',
21
21
  },
22
22
  dependencies: {
23
- '@mantiq/auth': '^0.1.2',
23
+ '@mantiq/auth': '^0.2.0',
24
24
  '@mantiq/cli': '^0.1.6',
25
- '@mantiq/core': '^0.1.4',
25
+ '@mantiq/core': '^0.2.0',
26
26
  '@mantiq/database': '^0.1.4',
27
27
  '@mantiq/events': '^0.1.2',
28
28
  '@mantiq/filesystem': '^0.1.2',
@@ -109,7 +109,7 @@ storage/heartbeat/
109
109
  // ── Entry points ────────────────────────────────────────────────────────
110
110
 
111
111
  'index.ts': `import { Application, CoreServiceProvider, HttpKernel, RouterImpl, CorsMiddleware, StartSession, EncryptCookies, VerifyCsrfToken } from '@mantiq/core'
112
- import { AuthServiceProvider, Authenticate, RedirectIfAuthenticated } from '@mantiq/auth'
112
+ import { AuthServiceProvider, Authenticate, RedirectIfAuthenticated, CheckAbilities, CheckForAnyAbility } from '@mantiq/auth'
113
113
  import { FilesystemServiceProvider } from '@mantiq/filesystem'
114
114
  import { LoggingServiceProvider } from '@mantiq/logging'
115
115
  import { EventServiceProvider } from '@mantiq/events'
@@ -169,6 +169,8 @@ kernel.registerMiddleware('csrf', VerifyCsrfToken)
169
169
  kernel.registerMiddleware('auth', Authenticate)
170
170
  kernel.registerMiddleware('guest', RedirectIfAuthenticated)
171
171
  kernel.registerMiddleware('heartbeat', HeartbeatMiddleware)
172
+ kernel.registerMiddleware('abilities', CheckAbilities)
173
+ kernel.registerMiddleware('ability', CheckForAnyAbility)
172
174
 
173
175
  // Global middleware
174
176
  kernel.setGlobalMiddleware(['cors', 'encrypt.cookies', 'session', 'heartbeat'])
@@ -322,6 +324,7 @@ export default {
322
324
 
323
325
  guards: {
324
326
  web: { driver: 'session', provider: 'users' },
327
+ api: { driver: 'token', provider: 'users' },
325
328
  },
326
329
 
327
330
  providers: {
@@ -663,10 +666,19 @@ export class User extends Model implements Authenticatable {
663
666
  setRememberToken(token: string | null): void { this.setAttribute('remember_token', token) }
664
667
  getRememberTokenName(): string { return 'remember_token' }
665
668
  }
669
+ `,
670
+
671
+ 'app/Models/PersonalAccessToken.ts': `import { PersonalAccessToken as BaseToken } from '@mantiq/auth'
672
+
673
+ // Re-export the built-in PersonalAccessToken.
674
+ // Extend this class if you need to add custom logic.
675
+ export class PersonalAccessToken extends BaseToken {}
666
676
  `,
667
677
 
668
678
  'app/Providers/DatabaseServiceProvider.ts': `import { ServiceProvider, config } from '@mantiq/core'
669
679
  import { DatabaseManager, setupModels, setManager, Migrator } from '@mantiq/database'
680
+ import { applyHasApiTokens, PersonalAccessToken } from '@mantiq/auth'
681
+ import { User } from '../Models/User.ts'
670
682
 
671
683
  export class DatabaseServiceProvider extends ServiceProvider {
672
684
  override register(): void {
@@ -683,7 +695,11 @@ export class DatabaseServiceProvider extends ServiceProvider {
683
695
 
684
696
  override async boot(): Promise<void> {
685
697
  // Resolve the manager (triggers creation via the singleton factory)
686
- this.app.make(DatabaseManager)
698
+ const manager = this.app.make(DatabaseManager)
699
+
700
+ // Set up PersonalAccessToken connection and apply HasApiTokens mixin
701
+ PersonalAccessToken.setConnection(manager.connection())
702
+ applyHasApiTokens(User)
687
703
  }
688
704
  }
689
705
  `,
@@ -709,6 +725,30 @@ export default class CreateUsersTable extends Migration {
709
725
  await schema.dropIfExists('users')
710
726
  }
711
727
  }
728
+ `,
729
+
730
+ 'database/migrations/002_create_personal_access_tokens_table.ts': `import { Migration } from '@mantiq/database'
731
+ import type { SchemaBuilder } from '@mantiq/database'
732
+
733
+ export default class CreatePersonalAccessTokensTable extends Migration {
734
+ override async up(schema: SchemaBuilder) {
735
+ await schema.create('personal_access_tokens', (t) => {
736
+ t.id()
737
+ t.string('tokenable_type')
738
+ t.unsignedBigInteger('tokenable_id')
739
+ t.string('name')
740
+ t.string('token', 64).unique()
741
+ t.json('abilities').nullable()
742
+ t.timestamp('last_used_at').nullable()
743
+ t.timestamp('expires_at').nullable()
744
+ t.timestamps()
745
+ })
746
+ }
747
+
748
+ override async down(schema: SchemaBuilder) {
749
+ await schema.dropIfExists('personal_access_tokens')
750
+ }
751
+ }
712
752
  `,
713
753
 
714
754
  'database/seeders/DatabaseSeeder.ts': `import { Seeder } from '@mantiq/database'
@@ -766,9 +806,9 @@ function applyKitOverrides(templates: Record<string, string>, ctx: TemplateConte
766
806
  postinstall: 'rm -rf node_modules/@mantiq/*/node_modules/@mantiq 2>/dev/null; true',
767
807
  },
768
808
  dependencies: {
769
- '@mantiq/auth': '^0.1.2',
809
+ '@mantiq/auth': '^0.2.0',
770
810
  '@mantiq/cli': '^0.1.6',
771
- '@mantiq/core': '^0.1.4',
811
+ '@mantiq/core': '^0.2.0',
772
812
  '@mantiq/database': '^0.1.4',
773
813
  '@mantiq/events': '^0.1.2',
774
814
  '@mantiq/filesystem': '^0.1.2',
@@ -849,7 +889,7 @@ bootstrap/
849
889
  // ── index.ts ────────────────────────────────────────────────────────────
850
890
  templates['index.ts'] = `import { Application, CoreServiceProvider, HttpKernel, RouterImpl, CorsMiddleware, StartSession, EncryptCookies, VerifyCsrfToken } from '@mantiq/core'
851
891
  import { ViteServiceProvider, ServeStaticFiles } from '@mantiq/vite'
852
- import { AuthServiceProvider, Authenticate, RedirectIfAuthenticated } from '@mantiq/auth'
892
+ import { AuthServiceProvider, Authenticate, RedirectIfAuthenticated, CheckAbilities, CheckForAnyAbility } from '@mantiq/auth'
853
893
  import { FilesystemServiceProvider } from '@mantiq/filesystem'
854
894
  import { LoggingServiceProvider } from '@mantiq/logging'
855
895
  import { EventServiceProvider } from '@mantiq/events'
@@ -921,6 +961,8 @@ kernel.registerMiddleware('csrf', VerifyCsrfToken)
921
961
  kernel.registerMiddleware('auth', Authenticate)
922
962
  kernel.registerMiddleware('guest', RedirectIfAuthenticated)
923
963
  kernel.registerMiddleware('heartbeat', HeartbeatMiddleware)
964
+ kernel.registerMiddleware('abilities', CheckAbilities)
965
+ kernel.registerMiddleware('ability', CheckForAnyAbility)
924
966
 
925
967
  // Global middleware
926
968
  kernel.setGlobalMiddleware(['static', 'cors', 'encrypt.cookies', 'session', 'heartbeat'])