Completed
Push — master ( f40498...e3ae3a )
by ARCANEDEV
03:17
created

RolesController::store()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 15
Code Lines 10

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 5
Bugs 0 Features 0
Metric Value
c 5
b 0
f 0
dl 0
loc 15
ccs 0
cts 12
cp 0
rs 9.4286
cc 1
eloc 10
nc 1
nop 1
crap 2
1
<?php namespace Arcanesoft\Auth\Http\Controllers\Foundation;
2
3
use Arcanesoft\Auth\Bases\FoundationController;
4
use Arcanesoft\Auth\Http\Requests\Backend\Roles\CreateRoleRequest;
5
use Arcanesoft\Auth\Http\Requests\Backend\Roles\UpdateRoleRequest;
6
use Arcanesoft\Contracts\Auth\Models\Role;
7
use Log;
8
9
/**
10
 * Class     RolesController
11
 *
12
 * @package  Arcanesoft\Auth\Http\Controllers\Foundation
13
 * @author   ARCANEDEV <[email protected]>
14
 *
15
 * @todo: Adding the authorization checks
16
 */
17
class RolesController extends FoundationController
18
{
19
    /* ------------------------------------------------------------------------------------------------
20
     |  Properties
21
     | ------------------------------------------------------------------------------------------------
22
     */
23
    /**
24
     * The Role model.
25
     *
26
     * @var \Arcanesoft\Contracts\Auth\Models\Role
27
     */
28
    protected $role;
29
30
    /* ------------------------------------------------------------------------------------------------
31
     |  Constructor
32
     | ------------------------------------------------------------------------------------------------
33
     */
34
    /**
35
     * Instantiate the controller.
36
     *
37
     * @param  \Arcanesoft\Contracts\Auth\Models\Role  $role
38
     */
39
    public function __construct(Role $role)
40
    {
41
        parent::__construct();
42
43
        $this->role = $role;
44
45
        $this->setCurrentPage('auth-roles');
46
        $this->addBreadcrumbRoute('Roles', 'auth::foundation.roles.index');
47
    }
48
49
    /* ------------------------------------------------------------------------------------------------
50
     |  Main Functions
51
     | ------------------------------------------------------------------------------------------------
52
     */
53
    public function index()
54
    {
55
        $roles = $this->role->with('users', 'permissions')->paginate(30);
56
57
        $title = 'List of roles';
58
        $this->setTitle($title);
59
        $this->addBreadcrumb($title);
60
61
        return $this->view('foundation.roles.list', compact('roles'));
62
    }
63
64
    public function create()
65
    {
66
        $title = 'Create a role';
67
        $this->setTitle($title);
68
        $this->addBreadcrumb($title);
69
70
        return $this->view('foundation.roles.create');
71
    }
72
73
    public function store(CreateRoleRequest $request)
74
    {
75
        $this->role->fill($request->only('name', 'slug', 'description'));
76
        $this->role->save();
77
        $this->role->permissions()->attach($request->get('permissions'));
78
79
        $message = 'The new role was successfully created !';
80
81
        Log::info($message, $this->role->toArray());
82
        $this->notifySuccess($message, 'Role created !');
83
84
        return redirect()
85
            ->route('auth::foundation.roles.index')
86
            ->with('success', $message);
87
    }
88
89
    public function show(Role $role)
90
    {
91
        /** @var  \Arcanesoft\Auth\Models\Role  $role */
92
        $role->load(['users', 'permissions', 'permissions.group']);
93
94
        $title = 'Role details';
95
        $this->setTitle($title);
96
        $this->addBreadcrumb($title);
97
98
        return $this->view('foundation.roles.show', compact('role'));
99
    }
100
101
    public function edit(Role $role)
102
    {
103
        /** @var  \Arcanesoft\Auth\Models\Role  $role */
104
        $role->load(['users', 'permissions']);
105
106
        $title = 'Edit Role';
107
        $this->setTitle($title);
108
        $this->addBreadcrumb($title);
109
110
        return $this->view('foundation.roles.edit', compact('role'));
111
    }
112
113
    public function update(UpdateRoleRequest $request, Role $role)
114
    {
115
        /** @var  \Arcanesoft\Auth\Models\Role  $role */
116
        $role->fill($request->only('name', 'slug', 'description'));
117
        $role->save();
118
        $role->permissions()->sync($request->get('permissions'));
119
120
        $message = 'The role was successfully updated !';
121
122
        Log::info($message, $role->toArray());
123
        $this->notifySuccess($message, 'Role updated !');
124
125
        return redirect()
126
            ->route('auth::foundation.roles.show', [$role->hashed_id])
0 ignored issues
show
Documentation introduced by
The property hashed_id does not exist on object<Arcanesoft\Auth\Models\Role>. Since you implemented __get, maybe consider adding a @property annotation.

Since your code implements the magic getter _get, this function will be called for any read access on an undefined variable. You can add the @property annotation to your class or interface to document the existence of this variable.

<?php

/**
 * @property int $x
 * @property int $y
 * @property string $text
 */
class MyLabel
{
    private $properties;

    private $allowedProperties = array('x', 'y', 'text');

    public function __get($name)
    {
        if (isset($properties[$name]) && in_array($name, $this->allowedProperties)) {
            return $properties[$name];
        } else {
            return null;
        }
    }

    public function __set($name, $value)
    {
        if (in_array($name, $this->allowedProperties)) {
            $properties[$name] = $value;
        } else {
            throw new \LogicException("Property $name is not defined.");
        }
    }

}

If the property has read access only, you can use the @property-read annotation instead.

Of course, you may also just have mistyped another name, in which case you should fix the error.

See also the PhpDoc documentation for @property.

Loading history...
127
            ->with('success', $message);
128
    }
129
130
    public function activate(Role $role)
131
    {
132
        /** @var  \Arcanesoft\Auth\Models\Role  $role */
133
        self::onlyAjax();
134
135
        try {
136
            if ($role->isActive()) {
137
                $role->deactivate();
138
                $title   = 'Role disabled !';
139
                $message = "The role {$role->name} has been successfully disabled !";
140
            }
141
            else {
142
                $role->activate();
143
                $title   = 'Role activated !';
144
                $message = "The role {$role->name} has been successfully activated !";
145
            }
146
147
148
            Log::info($message, $role->toArray());
149
            $this->notifySuccess($message, $title);
150
151
            $ajax = [
152
                'status'  => 'success',
153
                'message' => $message,
154
            ];
155
        }
156
        catch(\Exception $e) {
157
            $ajax = [
158
                'status'  => 'error',
159
                'message' => $e->getMessage(),
160
            ];
161
        }
162
163
        return response()->json($ajax);
164
    }
165
166
    public function delete(Role $role)
167
    {
168
        /** @var  \Arcanesoft\Auth\Models\Role  $role */
169
        self::onlyAjax();
170
171
        try {
172
            $role->delete();
173
174
            $message = "The role {$role->name} has been successfully deleted !";
175
            Log::info($message, $role->toArray());
176
            $this->notifySuccess($message, 'Role deleted !');
177
178
            $ajax = [
179
                'status'  => 'success',
180
                'message' => $message,
181
            ];
182
        }
183
        catch(\Exception $e) {
184
            $ajax = [
185
                'status'  => 'error',
186
                'message' => $e->getMessage(),
187
            ];
188
        }
189
190
        return response()->json($ajax);
191
    }
192
}
193