Completed
Push — master ( 8927df...f70445 )
by Abdelrahman
02:05
created

EmailVerificationController::send()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 21
Code Lines 14

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 14
nc 2
nop 1
dl 0
loc 21
rs 9.3142
c 0
b 0
f 0
1
<?php
2
3
/*
4
 * NOTICE OF LICENSE
5
 *
6
 * Part of the Rinvex Fort Package.
7
 *
8
 * This source file is subject to The MIT License (MIT)
9
 * that is bundled with this package in the LICENSE file.
10
 *
11
 * Package: Rinvex Fort Package
12
 * License: The MIT License (MIT)
13
 * Link:    https://rinvex.com
14
 */
15
16
namespace Rinvex\Fort\Http\Controllers\Frontend;
17
18
use Rinvex\Fort\Http\Controllers\AbstractController;
19
use Rinvex\Fort\Contracts\EmailVerificationBrokerContract;
20
use Rinvex\Fort\Http\Requests\Frontend\EmailVerificationRequest;
21
22
class EmailVerificationController extends AbstractController
23
{
24
    /**
25
     * Show the email verification request form.
26
     *
27
     * @return \Illuminate\Http\Response
0 ignored issues
show
Documentation introduced by
Should the return type not be \Illuminate\View\View|\I...\Contracts\View\Factory?

This check compares the return type specified in the @return annotation of a function or method doc comment with the types returned by the function and raises an issue if they mismatch.

Loading history...
28
     */
29
    public function request()
30
    {
31
        return view('rinvex/fort::frontend/verification.email.request');
32
    }
33
34
    /**
35
     * Process the email verification request form.
36
     *
37
     * @param \Rinvex\Fort\Http\Requests\Frontend\EmailVerificationRequest $request
38
     *
39
     * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\RedirectResponse
40
     */
41
    public function send(EmailVerificationRequest $request)
42
    {
43
        $result = app('rinvex.fort.emailverification')
44
            ->broker($this->getBroker())
45
            ->send($request->except('_token'));
46
47
        switch ($result) {
48
            case EmailVerificationBrokerContract::LINK_SENT:
49
                return intend([
50
                    'intended' => url('/'),
51
                    'with'     => ['rinvex.fort.alert.success' => trans($result)],
52
                ]);
53
54
            default:
55
                return intend([
56
                    'back'       => true,
57
                    'withInput'  => $request->only('email'),
58
                    'withErrors' => ['email' => trans($result)],
59
                ]);
60
        }
61
    }
62
63
    /**
64
     * Process the email verification.
65
     *
66
     * @param \Rinvex\Fort\Http\Requests\Frontend\EmailVerificationRequest $request
67
     *
68
     * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\RedirectResponse
69
     */
70
    public function verify(EmailVerificationRequest $request)
71
    {
72
        $result = app('rinvex.fort.emailverification')->broker($this->getBroker())->verify($request->except('_token'));
73
74
        switch ($result) {
75
            case EmailVerificationBrokerContract::EMAIL_VERIFIED:
76
                return intend([
77
                    'intended' => url('/'),
78
                    'with'     => ['rinvex.fort.alert.success' => trans($result)],
79
                ]);
80
81
            case EmailVerificationBrokerContract::INVALID_USER:
82
            case EmailVerificationBrokerContract::INVALID_TOKEN:
83
            default:
84
                return intend([
85
                    'route'      => 'rinvex.fort.frontend.verification.email.request',
86
                    'withInput'  => $request->only('email'),
87
                    'withErrors' => ['token' => trans($result)],
88
                ]);
89
        }
90
    }
91
}
92