1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
/**
* filename: /app/modules/User/routes.ts
* atau : /start/routes/user.ts
* import to start routes.ts
*
* import '/app/modules/User/routes.ts'
* or
* import './routes/user.ts'
*/
import Route from '@ioc:Adonis/Core/Route'
import User from 'App/Models/User'
import { schema, rules } from '@ioc:Adonis/Core/Validator'
Route.group(() => {
Route.get('/users', async () => {
const user = await User.all()
return { user }
})
Route.post('/logout', async ({ auth }) => {
await auth.use('api').revoke()
return { Revoke: true }
})
Route.post('/login', async ({ auth, request }) => {
const { username, email, password } = request.only(['username', 'email', 'password'])
try {
return await auth
.use('api')
.attempt(email || username, password, { expiresIn: '7days' })
} catch (error) {
return { error }
}
})
Route.post('/register', async ({ request }) => {
const userSchema = schema.create({
username: schema.string({ trim: true }, [
rules.unique({ table: 'users', column: 'username', caseInsensitive: true })
]),
email: schema.string({ trim: true }, [
rules.unique({ table: 'users', column: 'email', caseInsensitive: true }),
rules.email()]),
password: schema.string({}, [rules.maxLength(8)])
})
// validate & save
try {
await User.create(await request.validate({ schema: userSchema }))
return { INFO: 'Register Success...' }
} catch (error) {
return { error }
}
})
}).prefix('/api')
adonisjs 5 - auth
This post is licensed under CC BY 4.0 by the author.