AuthController   A
last analyzed

Complexity

Total Complexity 14

Size/Duplication

Total Lines 110
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 62
c 1
b 0
f 0
dl 0
loc 110
rs 10
wmc 14

7 Methods

Rating   Name   Duplication   Size   Complexity  
A register() 0 27 3
A logout() 0 7 1
A login() 0 42 5
A robot() 0 6 2
A logout_get() 0 6 1
A login_get() 0 3 1
A __construct() 0 4 1
1
<?php
2
3
namespace App\Http\Controllers\API;
4
5
use App\Http\Controllers\Controller;
6
use App\Http\Requests\UserLoginRequest;
7
use App\Http\Requests\UserRegisterRequest;
8
use App\Repositories\TokenRepository;
9
use App\Traits\CaptureIpTrait;
10
use App\User;
11
use Auth;
12
use Illuminate\Http\Request;
13
use Jenssegers\Agent\Agent;
14
15
//mail
16
// use Illuminate\Support\Facades\Mail;
17
18
class AuthController extends Controller
19
{
20
    public function __construct()
21
    {
22
        $this->middleware('auth')
23
      ->only(['logout_get', 'logout']);
24
    }
25
26
    public function robot()
27
    {
28
        $agent = new Agent();
29
30
        if ($agent->isRobot()) {
31
            return __('api.errors.robot');
32
        }
33
    }
34
35
    public function register(UserRegisterRequest $request)
36
    {
37
        if ($this->robot()) {
38
            return response()->json([
39
        'success' => false,
40
        'error'   => $this->robot(),
41
      ], 403);
42
        }
43
44
        $user = new User();
45
        $user->name = $request->name;
46
        $user->email = $request->email;
47
        $user->password = bcrypt($request->password);
48
        $ipAddress = new CaptureIpTrait();
49
        $user->signup_ip = $ipAddress->getClientIp();
50
51
        if (!$user->save()) {
52
            return response()->json([
53
        'success' => false,
54
        'error'   => __('api.errors.register'),
55
      ]);
56
        }
57
58
        return response()->json([
59
      'success' => false,
60
      'error'   => __('auth.needactive'),
61
    ], 403);
62
    }
63
64
    public function login_get()
65
    {
66
        return redirect('/');
67
    }
68
69
    public function login(UserLoginRequest $request)
70
    {
71
        if ($this->robot()) {
72
            return response()->json([
73
        'success' => false,
74
        'error'   => $this->robot(),
75
      ], 403);
76
        }
77
78
        $credentials = [
79
      'email'    => $request->email,
80
      'password' => $request->password,
81
    ];
82
83
        if (Auth::attempt($credentials)) {
84
            $user = User::find(Auth::id());
85
            Auth::logout();
86
            if (!$user->active) {
87
                return response()->json([
88
          'success' => false,
89
          'error'   => __('auth.deactive'),
90
        ], 403);
91
            }
92
93
            $token_data = new TokenRepository();
94
            $token = $token_data->setToken($user->id);
95
96
            if (isset($token->api_token)) {
97
                return response()->json([
98
          'success'    => true,
99
          'user_id'    => $user->id,
100
          'user_name'  => $user->name,
101
          'user_email' => $user->email,
102
          'api_token'  => $token->api_token,
103
        ]);
104
            }
105
        }
106
107
        return response()->json([
108
      'success' => false,
109
      'error'   => __('auth.failed'),
110
    ], 403);
111
    }
112
113
    public function logout_get(Request $request)
114
    {
115
        $token_data = new TokenRepository();
116
        $token_data->clear_token($request->token_data);
117
118
        return redirect('/')->with(['success_message' => __('auth.logout')]);
119
    }
120
121
    public function logout(Request $request)
122
    {
123
        $token_data = new TokenRepository();
124
        $token_data->clear_token($request->bearerToken());
125
126
        return response()->json([
127
      'success' => true,
128
    ]);
129
    }
130
}
131