|
| 1 | +import AcceptOrganizationInvite from '#actions/organizations/accept_organization_invite' |
1 | 2 | import DestroyOrganization from '#actions/organizations/destroy_organization'
|
2 | 3 | import SetActiveOrganization from '#actions/organizations/http/set_active_organization'
|
3 | 4 | import StoreOrganization from '#actions/organizations/store_organization'
|
4 | 5 | import UpdateOrganization from '#actions/organizations/update_organization'
|
| 6 | +import OrganizationInvite from '#models/organization_invite' |
| 7 | +import User from '#models/user' |
5 | 8 | import { organizationValidator } from '#validators/organization'
|
6 | 9 | import { inject } from '@adonisjs/core'
|
7 | 10 | import type { HttpContext } from '@adonisjs/core/http'
|
@@ -55,6 +58,37 @@ export default class OrganizationsController {
|
55 | 58 | return response.redirect().back()
|
56 | 59 | }
|
57 | 60 |
|
| 61 | + async acceptInvite({ request, response, auth, params, session }: HttpContext) { |
| 62 | + await auth.use('web').check() |
| 63 | + |
| 64 | + if (!request.hasValidSignature()) { |
| 65 | + session.flash('errorBag', 'An invalid invitation URL was provided') |
| 66 | + return auth.user |
| 67 | + ? response.redirect().toRoute('courses.index') |
| 68 | + : response.redirect().toRoute('login.show') |
| 69 | + } |
| 70 | + |
| 71 | + if (!auth.use('web').user) { |
| 72 | + const invite = await OrganizationInvite.findOrFail(params.id) |
| 73 | + const isUser = await User.query().where('email', invite.email).first() |
| 74 | + |
| 75 | + session.put('invite_id', invite.id) |
| 76 | + |
| 77 | + return isUser |
| 78 | + ? response.redirect().toRoute('login.show') |
| 79 | + : response.redirect().toRoute('register.show') |
| 80 | + } |
| 81 | + |
| 82 | + const result = await AcceptOrganizationInvite.handle({ |
| 83 | + inviteId: params.id, |
| 84 | + user: auth.use('web').user!, |
| 85 | + }) |
| 86 | + |
| 87 | + session.flash('success', result.message) |
| 88 | + |
| 89 | + return response.redirect().toRoute('courses.index') |
| 90 | + } |
| 91 | + |
58 | 92 | /**
|
59 | 93 | * Delete record
|
60 | 94 | */
|
|
0 commit comments