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.
- package/package.json +1 -1
- package/src/templates.ts +49 -7
package/package.json
CHANGED
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.
|
|
23
|
+
'@mantiq/auth': '^0.2.0',
|
|
24
24
|
'@mantiq/cli': '^0.1.6',
|
|
25
|
-
'@mantiq/core': '^0.
|
|
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.
|
|
809
|
+
'@mantiq/auth': '^0.2.0',
|
|
770
810
|
'@mantiq/cli': '^0.1.6',
|
|
771
|
-
'@mantiq/core': '^0.
|
|
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'])
|