Attendize/app/Http/Controllers/Admin/UserCrudController.php

174 lines
7.4 KiB
PHP

<?php
namespace Backpack\PermissionManager\app\Http\Controllers;
use Backpack\CRUD\app\Http\Controllers\CrudController;
use Backpack\PermissionManager\app\Http\Requests\UserStoreCrudRequest as StoreRequest;
use Backpack\PermissionManager\app\Http\Requests\UserUpdateCrudRequest as UpdateRequest;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;
class UserCrudController extends CrudController
{
public function setup()
{
/*
|--------------------------------------------------------------------------
| BASIC CRUD INFORMATION
|--------------------------------------------------------------------------
*/
$this->crud->setModel(config('backpack.permissionmanager.models.user'));
$this->crud->setEntityNameStrings(trans('backpack::permissionmanager.user'), trans('backpack::permissionmanager.users'));
$this->crud->setRoute(backpack_url('user'));
// Columns.
$this->crud->setColumns([
[
'name' => 'name',
'label' => trans('backpack::permissionmanager.name'),
'type' => 'text',
],
[
'name' => 'email',
'label' => trans('backpack::permissionmanager.email'),
'type' => 'email',
],
[
'name' => 'account_id',
'label' => 'Account',
'type' => 'select',
'entity'=> 'account',
'attribute'=>'email'
]
// [ // n-n relationship (with pivot table)
// 'label' => trans('backpack::permissionmanager.roles'), // Table column heading
// 'type' => 'select_multiple',
// 'name' => 'roles', // the method that defines the relationship in your Model
// 'entity' => 'roles', // the method that defines the relationship in your Model
// 'attribute' => 'name', // foreign key attribute that is shown to user
// 'model' => config('permission.models.role'), // foreign key model
// ],
// [ // n-n relationship (with pivot table)
// 'label' => trans('backpack::permissionmanager.extra_permissions'), // Table column heading
// 'type' => 'select_multiple',
// 'name' => 'permissions', // the method that defines the relationship in your Model
// 'entity' => 'permissions', // the method that defines the relationship in your Model
// 'attribute' => 'name', // foreign key attribute that is shown to user
// 'model' => config('permission.models.permission'), // foreign key model
// ],
]);
// Fields
$this->crud->addFields([
[
'name' => 'name',
'label' => trans('backpack::permissionmanager.name'),
'type' => 'text',
],
[
'name' => 'email',
'label' => trans('backpack::permissionmanager.email'),
'type' => 'email',
],
[
'name' => 'password',
'label' => trans('backpack::permissionmanager.password'),
'type' => 'password',
],
[
'name' => 'password_confirmation',
'label' => trans('backpack::permissionmanager.password_confirmation'),
'type' => 'password',
],
[
'label' => 'Account',
'name' => 'account_id',
'type' => 'select',
'entity' => 'account',
'attribute' => 'email'
]
// [
// // two interconnected entities
// 'label' => trans('backpack::permissionmanager.user_role_permission'),
// 'field_unique_name' => 'user_role_permission',
// 'type' => 'checklist_dependency',
// 'name' => 'roles_and_permissions', // the methods that defines the relationship in your Model
// 'subfields' => [
// 'primary' => [
// 'label' => trans('backpack::permissionmanager.roles'),
// 'name' => 'roles', // the method that defines the relationship in your Model
// 'entity' => 'roles', // the method that defines the relationship in your Model
// 'entity_secondary' => 'permissions', // the method that defines the relationship in your Model
// 'attribute' => 'name', // foreign key attribute that is shown to user
// 'model' => config('permission.models.role'), // foreign key model
// 'pivot' => true, // on create&update, do you need to add/delete pivot table entries?]
// 'number_columns' => 3, //can be 1,2,3,4,6
// ],
// 'secondary' => [
// 'label' => ucfirst(trans('backpack::permissionmanager.permission_singular')),
// 'name' => 'permissions', // the method that defines the relationship in your Model
// 'entity' => 'permissions', // the method that defines the relationship in your Model
// 'entity_primary' => 'roles', // the method that defines the relationship in your Model
// 'attribute' => 'name', // foreign key attribute that is shown to user
// 'model' => config('permission.models.permission'), // foreign key model
// 'pivot' => true, // on create&update, do you need to add/delete pivot table entries?]
// 'number_columns' => 3, //can be 1,2,3,4,6
// ],
// ],
// ],
]);
}
/**
* Store a newly created resource in the database.
*
* @param StoreRequest $request - type injection used for validation using Requests
*
* @return \Illuminate\Http\RedirectResponse
*/
public function store(StoreRequest $request)
{
$this->handlePasswordInput($request);
$request->request->remove('roles_show');
$request->request->remove('permissions_show');
return parent::storeCrud($request);
}
/**
* Update the specified resource in the database.
*
* @param UpdateRequest $request - type injection used for validation using Requests
*
* @return \Illuminate\Http\RedirectResponse
*/
public function update(UpdateRequest $request)
{
$this->handlePasswordInput($request);
$request->request->remove('roles_show');
$request->request->remove('permissions_show');
return parent::updateCrud($request);
}
/**
* Handle password input fields.
*
* @param Request $request
*/
protected function handlePasswordInput(Request $request)
{
// Remove fields not present on the user.
$request->request->remove('password_confirmation');
// Encrypt password if specified.
if ($request->input('password')) {
$request->request->set('password', Hash::make($request->input('password')));
} else {
$request->request->remove('password');
}
}
}