@adonisjs/auth 8.0.8 → 8.0.11

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.
@@ -6,6 +6,7 @@ import { HttpContextContract } from '@ioc:Adonis/Core/HttpContext';
6
6
  export declare class AuthenticationException extends Exception {
7
7
  guard: string;
8
8
  redirectTo: string;
9
+ responseText: string;
9
10
  /**
10
11
  * Raise exception with message and redirect url
11
12
  */
@@ -20,6 +20,7 @@ class AuthenticationException extends utils_1.Exception {
20
20
  constructor(message, code, guard, redirectTo) {
21
21
  super(message, 401, code);
22
22
  this.redirectTo = '/login';
23
+ this.responseText = this.message;
23
24
  if (redirectTo) {
24
25
  this.redirectTo = redirectTo;
25
26
  }
@@ -35,7 +36,7 @@ class AuthenticationException extends utils_1.Exception {
35
36
  ctx.response
36
37
  .status(this.status)
37
38
  .header('WWW-Authenticate', `Basic realm="${realm}", charset="UTF-8"`)
38
- .send('Access denied');
39
+ .send(this.responseText);
39
40
  }
40
41
  /**
41
42
  * Send response as an array of errors
@@ -44,7 +45,7 @@ class AuthenticationException extends utils_1.Exception {
44
45
  ctx.response.status(this.status).send({
45
46
  errors: [
46
47
  {
47
- message: this.message,
48
+ message: this.responseText,
48
49
  },
49
50
  ],
50
51
  });
@@ -54,10 +55,10 @@ class AuthenticationException extends utils_1.Exception {
54
55
  */
55
56
  respondWithRedirect(ctx) {
56
57
  if (!ctx.session) {
57
- return ctx.response.status(this.status).send(this.message);
58
+ return ctx.response.status(this.status).send(this.responseText);
58
59
  }
59
60
  ctx.session.flashExcept(['_csrf']);
60
- ctx.session.flash('auth', { error: this.message });
61
+ ctx.session.flash('auth', { error: this.responseText });
61
62
  ctx.response.redirect(this.redirectTo, true);
62
63
  }
63
64
  /**
@@ -68,7 +69,7 @@ class AuthenticationException extends utils_1.Exception {
68
69
  errors: [
69
70
  {
70
71
  code: this.code,
71
- title: this.message,
72
+ title: this.responseText,
72
73
  source: null,
73
74
  },
74
75
  ],
@@ -101,6 +102,12 @@ class AuthenticationException extends utils_1.Exception {
101
102
  * We need access to the guard config and driver to make appropriate response
102
103
  */
103
104
  const config = this.guard ? ctx.auth.use(this.guard).config : null;
105
+ /**
106
+ * Use translation when using i18n
107
+ */
108
+ if ('i18n' in ctx) {
109
+ this.responseText = ctx.i18n.formatMessage(`auth.${this.code}`, {}, this.message);
110
+ }
104
111
  /**
105
112
  * Show username, password prompt when using basic auth driver
106
113
  */
@@ -5,6 +5,7 @@ import { HttpContextContract } from '@ioc:Adonis/Core/HttpContext';
5
5
  */
6
6
  export declare class InvalidCredentialsException extends Exception {
7
7
  guard: string;
8
+ responseText: string;
8
9
  /**
9
10
  * Unable to find user
10
11
  */
@@ -14,6 +14,10 @@ const utils_1 = require("@poppinss/utils");
14
14
  * Exception raised when unable to verify user credentials
15
15
  */
16
16
  class InvalidCredentialsException extends utils_1.Exception {
17
+ constructor() {
18
+ super(...arguments);
19
+ this.responseText = this.message;
20
+ }
17
21
  /**
18
22
  * Unable to find user
19
23
  */
@@ -37,7 +41,7 @@ class InvalidCredentialsException extends utils_1.Exception {
37
41
  ctx.response.status(this.status).send({
38
42
  errors: [
39
43
  {
40
- message: 'Invalid user credentials',
44
+ message: this.responseText,
41
45
  },
42
46
  ],
43
47
  });
@@ -47,10 +51,14 @@ class InvalidCredentialsException extends utils_1.Exception {
47
51
  */
48
52
  respondWithRedirect(ctx) {
49
53
  if (!ctx.session) {
50
- return ctx.response.status(this.status).send('Invalid credentials');
54
+ return ctx.response.status(this.status).send(this.responseText);
51
55
  }
52
56
  ctx.session.flashExcept(['_csrf']);
53
57
  ctx.session.flash('auth', {
58
+ error: this.responseText,
59
+ /**
60
+ * Will be removed in the future
61
+ */
54
62
  errors: {
55
63
  uid: this.code === 'E_INVALID_AUTH_UID' ? ['Invalid login id'] : null,
56
64
  password: this.code === 'E_INVALID_AUTH_PASSWORD' ? ['Invalid password'] : null,
@@ -66,7 +74,7 @@ class InvalidCredentialsException extends utils_1.Exception {
66
74
  errors: [
67
75
  {
68
76
  code: this.code,
69
- title: 'Invalid user credentials',
77
+ title: this.responseText,
70
78
  source: null,
71
79
  },
72
80
  ],
@@ -77,6 +85,12 @@ class InvalidCredentialsException extends utils_1.Exception {
77
85
  * upon the type of request
78
86
  */
79
87
  async handle(_, ctx) {
88
+ /**
89
+ * Use translation when using i18n
90
+ */
91
+ if ('i18n' in ctx) {
92
+ this.responseText = ctx.i18n.formatMessage(`auth.${this.code}`, {}, this.message);
93
+ }
80
94
  if (ctx.request.ajax()) {
81
95
  this.respondWithJson(ctx);
82
96
  return;
@@ -8,6 +8,6 @@
8
8
  |
9
9
  */
10
10
  api: {
11
- implementation: OATGuardContract<'user', 'api'>,
12
- config: OATGuardConfig<'user'>,
13
- },
11
+ implementation: OATGuardContract<'user', 'api'>
12
+ config: OATGuardConfig<'user'>
13
+ }
@@ -8,6 +8,6 @@
8
8
  |
9
9
  */
10
10
  basic: {
11
- implementation: BasicAuthGuardContract<'user', 'basic'>,
12
- config: BasicAuthGuardConfig<'user'>,
13
- },
11
+ implementation: BasicAuthGuardContract<'user', 'basic'>
12
+ config: BasicAuthGuardConfig<'user'>
13
+ }
@@ -11,6 +11,6 @@
11
11
  |
12
12
  */
13
13
  user: {
14
- implementation: DatabaseProviderContract<DatabaseProviderRow>,
15
- config: DatabaseProviderConfig,
16
- },
14
+ implementation: DatabaseProviderContract<DatabaseProviderRow>
15
+ config: DatabaseProviderConfig
16
+ }
@@ -11,6 +11,6 @@
11
11
  |
12
12
  */
13
13
  user: {
14
- implementation: LucidProviderContract<typeof {{ modelName }}>,
15
- config: LucidProviderConfig<typeof {{ modelName }}>,
16
- },
14
+ implementation: LucidProviderContract<typeof {{ modelName }}>
15
+ config: LucidProviderConfig<typeof {{ modelName }}>
16
+ }
@@ -8,6 +8,6 @@
8
8
  |
9
9
  */
10
10
  web: {
11
- implementation: SessionGuardContract<'user', 'web'>,
12
- config: SessionGuardConfig<'user'>,
13
- },
11
+ implementation: SessionGuardContract<'user', 'web'>
12
+ config: SessionGuardConfig<'user'>
13
+ }
@@ -11,8 +11,8 @@ import { AuthenticationException } from '@adonisjs/auth/build/standalone'
11
11
  */
12
12
  export default class AuthMiddleware {
13
13
  /**
14
- * The URL to redirect to when request is Unauthorized
15
- */
14
+ * The URL to redirect to when request is Unauthorized
15
+ */
16
16
  protected redirectTo = '/login'
17
17
 
18
18
  /**
@@ -23,7 +23,7 @@ export default class AuthMiddleware {
23
23
  * of the mentioned guards and that guard will be used by the rest of the code
24
24
  * during the current request.
25
25
  */
26
- protected async authenticate (auth: HttpContextContract['auth'], guards: (keyof GuardsList)[]) {
26
+ protected async authenticate(auth: HttpContextContract['auth'], guards: (keyof GuardsList)[]) {
27
27
  /**
28
28
  * Hold reference to the guard last attempted within the for loop. We pass
29
29
  * the reference of the guard to the "AuthenticationException", so that
@@ -60,7 +60,11 @@ export default class AuthMiddleware {
60
60
  /**
61
61
  * Handle request
62
62
  */
63
- public async handle ({ auth }: HttpContextContract, next: () => Promise<void>, customGuards: (keyof GuardsList)[]) {
63
+ public async handle (
64
+ { auth }: HttpContextContract,
65
+ next: () => Promise<void>,
66
+ customGuards: (keyof GuardsList)[]
67
+ ) {
64
68
  /**
65
69
  * Uses the user defined guards or the default guard mentioned in
66
70
  * the config file
@@ -10,7 +10,7 @@ export default class SilentAuthMiddleware {
10
10
  /**
11
11
  * Handle request
12
12
  */
13
- public async handle ({ auth }: HttpContextContract, next: () => Promise<void>) {
13
+ public async handle({ auth }: HttpContextContract, next: () => Promise<void>) {
14
14
  /**
15
15
  * Check if user is logged-in or not. If yes, then `ctx.auth.user` will be
16
16
  * set to the instance of the currently logged in user.
@@ -3,7 +3,7 @@ import BaseSchema from '@ioc:Adonis/Lucid/Schema'
3
3
  export default class {{ tokensSchemaName }} extends BaseSchema {
4
4
  protected tableName = '{{ tokensTableName }}'
5
5
 
6
- public async up () {
6
+ public async up() {
7
7
  this.schema.createTable(this.tableName, (table) => {
8
8
  table.increments('id').primary()
9
9
  table.integer('user_id').unsigned().references('id').inTable('{{ usersTableName }}').onDelete('CASCADE')
@@ -19,7 +19,7 @@ export default class {{ tokensSchemaName }} extends BaseSchema {
19
19
  })
20
20
  }
21
21
 
22
- public async down () {
22
+ public async down() {
23
23
  this.schema.dropTable(this.tableName)
24
24
  }
25
25
  }
@@ -3,7 +3,7 @@ import BaseSchema from '@ioc:Adonis/Lucid/Schema'
3
3
  export default class {{ usersSchemaName }} extends BaseSchema {
4
4
  protected tableName = '{{ usersTableName }}'
5
5
 
6
- public async up () {
6
+ public async up() {
7
7
  this.schema.createTable(this.tableName, (table) => {
8
8
  table.increments('id').primary()
9
9
  table.string('email', 255).notNullable()
@@ -18,7 +18,7 @@ export default class {{ usersSchemaName }} extends BaseSchema {
18
18
  })
19
19
  }
20
20
 
21
- public async down () {
21
+ public async down() {
22
22
  this.schema.dropTable(this.tableName)
23
23
  }
24
24
  }
@@ -1,10 +1,6 @@
1
1
  import { DateTime } from 'luxon'
2
2
  import Hash from '@ioc:Adonis/Core/Hash'
3
- import {
4
- column,
5
- beforeSave,
6
- BaseModel,
7
- } from '@ioc:Adonis/Lucid/Orm'
3
+ import { column, beforeSave, BaseModel } from '@ioc:Adonis/Lucid/Orm'
8
4
 
9
5
  export default class {{ modelName }} extends BaseModel {
10
6
  @column({ isPrimary: true })
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adonisjs/auth",
3
- "version": "8.0.8",
3
+ "version": "8.0.11",
4
4
  "description": "Offical authentication provider for Adonis framework",
5
5
  "types": "build/adonis-typings/index.d.ts",
6
6
  "main": "build/providers/AuthProvider.js",
@@ -46,37 +46,38 @@
46
46
  "url": "https://github.com/adonisjs/auth/issues"
47
47
  },
48
48
  "devDependencies": {
49
- "@adonisjs/core": "^5.3.1",
50
- "@adonisjs/lucid": "^16.0.0",
51
- "@adonisjs/mrm-preset": "^4.1.2",
52
- "@adonisjs/redis": "^7.0.9",
53
- "@adonisjs/repl": "^3.1.6",
54
- "@adonisjs/require-ts": "^2.0.8",
55
- "@adonisjs/session": "^6.1.2",
56
- "@adonisjs/sink": "^5.1.6",
57
- "@poppinss/dev-utils": "^1.1.5",
58
- "@types/node": "^16.7.6",
49
+ "@adonisjs/core": "^5.5.0",
50
+ "@adonisjs/i18n": "^1.5.4",
51
+ "@adonisjs/lucid": "^17.0.0",
52
+ "@adonisjs/mrm-preset": "^5.0.2",
53
+ "@adonisjs/redis": "^7.1.1",
54
+ "@adonisjs/repl": "^3.1.8",
55
+ "@adonisjs/require-ts": "^2.0.10",
56
+ "@adonisjs/session": "^6.1.4",
57
+ "@adonisjs/sink": "^5.2.2",
58
+ "@poppinss/dev-utils": "^2.0.2",
59
+ "@types/node": "^17.0.21",
59
60
  "@types/supertest": "^2.0.11",
61
+ "@vscode/sqlite3": "^5.0.7",
60
62
  "copyfiles": "^2.4.1",
61
63
  "del-cli": "^4.0.1",
62
- "eslint": "^7.32.0",
63
- "eslint-config-prettier": "^8.3.0",
64
- "eslint-plugin-adonis": "^1.3.3",
65
- "eslint-plugin-prettier": "^3.4.1",
64
+ "eslint": "^8.10.0",
65
+ "eslint-config-prettier": "^8.4.0",
66
+ "eslint-plugin-adonis": "^2.1.0",
67
+ "eslint-plugin-prettier": "^4.0.0",
66
68
  "github-label-sync": "^2.0.2",
67
- "husky": "^7.0.2",
68
- "japa": "^3.1.1",
69
- "mrm": "^3.0.8",
70
- "np": "^7.5.0",
69
+ "husky": "^7.0.4",
70
+ "japa": "^4.0.0",
71
+ "mrm": "^3.0.10",
72
+ "np": "^7.6.0",
71
73
  "phc-bcrypt": "^1.0.7",
72
- "pino-pretty": "^6.0.0",
73
- "prettier": "^2.3.2",
74
+ "pino-pretty": "^7.5.1",
75
+ "prettier": "^2.5.1",
74
76
  "reflect-metadata": "^0.1.13",
75
77
  "set-cookie-parser": "^2.4.8",
76
- "sqlite3": "^5.0.2",
77
- "supertest": "^6.1.6",
78
- "ts-essentials": "^8.1.0",
79
- "typescript": "^4.4.2"
78
+ "supertest": "^6.2.2",
79
+ "ts-essentials": "^9.1.2",
80
+ "typescript": "^4.6.2"
80
81
  },
81
82
  "nyc": {
82
83
  "exclude": [
@@ -96,17 +97,21 @@
96
97
  "anyBranch": false
97
98
  },
98
99
  "dependencies": {
99
- "@poppinss/hooks": "^3.0.5",
100
- "@poppinss/utils": "^3.2.0",
101
- "luxon": "^2.0.2"
100
+ "@poppinss/hooks": "^5.0.2",
101
+ "@poppinss/utils": "^4.0.2",
102
+ "luxon": "^2.3.1"
102
103
  },
103
104
  "peerDependencies": {
104
105
  "@adonisjs/core": "^5.1.1",
105
- "@adonisjs/lucid": "^15.0.0",
106
+ "@adonisjs/i18n": "^1.3.1",
107
+ "@adonisjs/lucid": "^17.0.0",
106
108
  "@adonisjs/redis": "^7.0.0",
107
109
  "@adonisjs/session": "^6.0.0"
108
110
  },
109
111
  "peerDependenciesMeta": {
112
+ "@adonisjs/i18n": {
113
+ "optional": true
114
+ },
110
115
  "@adonisjs/lucid": {
111
116
  "optional": true
112
117
  },