VerifiesMobiles::unprocessableEntity()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 1
c 0
b 0
f 0
dl 0
loc 3
rs 10
cc 1
nc 1
nop 0
1
<?php
2
3
namespace Fouladgar\MobileVerification\Concerns;
4
5
use Fouladgar\MobileVerification\Events\Verified;
6
use Fouladgar\MobileVerification\Exceptions\InvalidTokenException;
7
use Fouladgar\MobileVerification\Http\Requests\VerificationRequest;
8
use Illuminate\Http\JsonResponse;
9
use Illuminate\Http\Request;
10
11
trait VerifiesMobiles
12
{
13
    use RedirectsUsers;
14
15
    /**
16
     * {@inheritdoc}
17
     */
18
    public function verify(VerificationRequest $request)
19
    {
20
        $user = $request->user();
21
22
        if ($user->hasVerifiedMobile()) {
23
            return $request->expectsJson() ? $this->unprocessableEntity() : redirect($this->redirectPath());
24
        }
25
26
        try {
27
            $this->tokenBroker->verifyToken($user, $request->token);
28
        } catch (InvalidTokenException $e) {
29
            return $request->expectsJson()
30
                ? response()->json(['message' => $e->getMessage()], $e->getCode())
31
                : back()->withErrors(['token' => $e->getMessage()]);
32
        }
33
34
        event(new Verified($user, $request->all()));
35
36
        return $request->expectsJson()
37
            ? $this->successMessage()
38
            : redirect($this->redirectPath())
39
                ->with('mobileVerificationVerified', __('mobile_verifier.successful_verification'));
40
    }
41
42
    /**
43
     * {@inheritdoc}
44
     */
45
    public function resend(Request $request)
46
    {
47
        $user = $request->user();
48
49
        if ($user->hasVerifiedMobile()) {
50
            return $request->expectsJson() ? $this->unprocessableEntity() : redirect($this->redirectPath());
51
        }
52
53
        $this->tokenBroker->sendToken($user);
54
55
        return $request->expectsJson()
56
            ? $this->successMessage()
57
            : back()->with('mobileVerificationResend', __('mobile_verifier.successful_resend'));
58
    }
59
60
    /**
61
     * @return JsonResponse
62
     */
63
    protected function successMessage(): JsonResponse
64
    {
65
        return response()->json(['message' => __('mobile_verifier.successful_verification')], 200);
66
    }
67
68
    /**
69
     * @return JsonResponse
70
     */
71
    protected function unprocessableEntity(): JsonResponse
72
    {
73
        return response()->json(['message' => __('mobile_verifier.already_verified')], 422);
74
    }
75
}
76