| Path : /var/www/html/usd_loan_system/app/Http/Controllers/ |
|
B-Con CMD Config cPanel C-Rdp D-Log Info Jump Mass Ransom Symlink vHost Zone-H |
| Current File : /var/www/html/usd_loan_system/app/Http/Controllers/UserController.php |
<?php
namespace App\Http\Controllers;
use App\Helpers\GeneralHelper;
use App\Models\Payroll;
use App\Models\Permission;
use App\Models\BranchUser;
use App\Models\User;
use Cartalyst\Sentinel\Laravel\Facades\Sentinel;
use Cartalyst\Sentinel\Roles\EloquentRole;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Validator;
use Laracasts\Flash\Flash;
class UserController extends Controller
{
public function __construct()
{
$this->middleware(['sentinel', 'branch']);
}
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\eResponse
*/
public function index()
{
if (!Sentinel::hasAccess('users')) {
Flash::warning("Permission Denied");
return redirect('/');
}
$data = User::query()
->with('roles')
->orderBy('id', 'desc')
->paginate(default_paginate());
return view('user.data', compact('data'));
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
if (!Sentinel::hasAccess('users.create')) {
Flash::warning("Permission Denied");
return redirect('/');
}
$roles = DB::table('roles')->get();
$role = array();
foreach ($roles as $key) {
$role[$key->name] = $key->name;
}
return view('user.create', compact('role'));
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
if (!Sentinel::hasAccess('users.create')) {
Flash::warning("Permission Denied");
return redirect('/');
}
$rules = array(
'email' => 'required|unique:users',
'password' => 'required',
'rpassword' => 'required|same:password',
'first_name' => 'required',
'last_name' => 'required',
);
$validator = Validator::make($request->all(), $rules);
if ($validator->fails()) {
Flash::warning(translate('validation_error'));
return redirect()->back()->withInput()->withErrors($validator);
} else {
$credentials = [
'email' => $request->email,
'password' => $request->password,
'first_name' => $request->first_name,
'last_name' => $request->last_name,
'address' => $request->address,
'notes' => $request->notes,
'gender' => $request->gender,
'phone' => $request->phone,
'max_approval' => $request->max_approval
];
$user = Sentinel::registerAndActivate($credentials);
BranchUser::create(['branch_id' => 1, 'user_id' => $user->id]);
$role = Sentinel::findRoleByName($request->role);
$role->users()->attach($user->id);
GeneralHelper::audit_trail("Added user with id:" . $user->id);
Flash::success("Successfully Saved");
return redirect('user/data');
}
}
/**
* Display the specified resource.
*
* @return \Illuminate\Http\Response
*/
public function show($user)
{
if (!Sentinel::hasAccess('users.view')) {
Flash::warning("Permission Denied");
return redirect('/');
}
$payroll = Payroll::where('user_id', $user->id)->get();
return view('user.show', compact('user', 'payroll'));
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($user)
{
if (!Sentinel::hasAccess('users.update')) {
Flash::warning("Permission Denied");
return redirect('/');
}
$roles = DB::table('roles')->get();
$role = array();
foreach ($roles as $key) {
$role[$key->name] = $key->name;
}
foreach ($user->roles as $sel) {
$selected = $sel->name;
}
return view('user.edit', compact('user', 'role', 'selected'));
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
if (!Sentinel::hasAccess('users.update')) {
Flash::warning("Permission Denied");
return redirect('/');
}
$user = Sentinel::findById($id);
$credentials = [
'email' => $request->email,
'first_name' => $request->first_name,
'last_name' => $request->last_name,
'address' => $request->address,
'notes' => $request->notes,
'gender' => $request->gender,
'phone' => $request->phone,
'max_approval' => $request->max_approval
];
if (!empty($request->password)) {
$credentials['password'] = $request->password;
}
if ($request->role != $request->previous_role) {
$role = Sentinel::findRoleByName($request->previous_role);
$role->users()->detach($user->id);
$role = Sentinel::findRoleByName($request->role);
$role->users()->attach($user->id);
}
$user = Sentinel::update($user, $credentials);
GeneralHelper::audit_trail("Updated user with id:" . $user->id);
Flash::success("Successfully Saved");
return redirect('user/data');
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function delete($id)
{
if (!Sentinel::hasAccess('users.delete')) {
Flash::warning("Permission Denied");
return redirect('/');
}
if (Sentinel::getUser()->id == $id) {
Flash::warning("You cannot delete your account");
return redirect('/');
}
$user = Sentinel::findById($id);
$user->delete();
GeneralHelper::audit_trail("Deleted user with id:" . $id);
Flash::success("Successfully Deleted");
return redirect('user/data');
}
public function profile()
{
$user = Sentinel::findById(Sentinel::getUser()->id);
return view('user.profile', compact('user'));
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function profileUpdate(Request $request)
{
$user = Sentinel::findById(Sentinel::getUser()->id);
$credentials = [
'email' => $request->email,
'first_name' => $request->first_name,
'last_name' => $request->last_name,
'address' => $request->address,
'notes' => $request->notes,
'gender' => $request->gender,
'phone' => $request->phone
];
if (!empty($request->password)) {
$credentials['password'] = $request->password;
}
$user = Sentinel::update($user, $credentials);
Flash::success("Successfully Saved");
return redirect('dashboard');
}
//manage permissions
public function indexPermission()
{
$data = array();
$permissions = Permission::where('parent_id', 0)->get();
foreach ($permissions as $permission) {
array_push($data, $permission);
$subs = Permission::where('parent_id', $permission->id)->get();
foreach ($subs as $sub) {
array_push($data, $sub);
}
}
return view('user.permission.data', compact('data'));
}
public function createPermission()
{
$parents = Permission::where('parent_id', 0)->get();
$parent = array();
$parent['0'] = "None";
foreach ($parents as $key) {
$parent[$key->id] = $key->name;
}
return view('user.permission.create', compact('parent'));
}
public function storePermission(Request $request)
{
$permission = new Permission();
$permission->name = $request->name;
$permission->parent_id = $request->parent_id;
$permission->description = $request->description;
if (!empty($request->slug)) {
$permission->slug = $request->slug;
} else {
$permission->slug = str_slug($request->name, '_');
}
$permission->save();
Flash::success("Successfully Saved");
return redirect('user/permission/data');
}
public function editPermission($permission)
{
$parents = Permission::where('parent_id', 0)->get();
$parent = array();
$parent['0'] = "None";
foreach ($parents as $key) {
$parent[$key->id] = $key->name;
}
if ($permission->parent_id == 0) {
$selected = 0;
} else {
$selected = 1;
}
return view('user.permission.edit', compact('parent', 'permission', 'selected'));
}
public function updatePermission(Request $request, $id)
{
$permission = Permission::find($id);
$permission->name = $request->name;
$permission->parent_id = $request->parent_id;
$permission->description = $request->description;
if (!empty($request->slug)) {
$permission->slug = $request->slug;
} else {
$permission->slug = str_slug($request->name, '_');
}
$permission->save();
Flash::success("Successfully Saved");
return redirect('user/permission/data');
}
//manage roles
public function indexRole()
{
if (!Sentinel::hasAccess('users.roles')) {
Flash::warning("Permission Denied");
return redirect('/');
}
$data = EloquentRole::query()->latest()->paginate(default_paginate());
return view('user.role.data', compact('data'));
}
public function createRole()
{
$data = array();
$permissions = Permission::where('parent_id', 0)->get();
foreach ($permissions as $permission) {
array_push($data, $permission);
$subs = Permission::where('parent_id', $permission->id)->get();
foreach ($subs as $sub) {
array_push($data, $sub);
}
}
return view('user.role.create', compact('data'));
}
public function storeRole(Request $request)
{
$role = new EloquentRole();
$role->name = $request->name;
$role->slug = str_slug($request->name, '_');
$role->save();
if (!empty($request->permission)) {
foreach ($request->permission as $key) {
$role->updatePermission($key, true, true)->save();
}
}
GeneralHelper::audit_trail("Added role with id:" . $role->id);
Flash::success("Successfully Saved");
return redirect('user/role/data');
}
public function editRole($id)
{
$data = array();
$permissions = Permission::where('parent_id', 0)->get();
foreach ($permissions as $permission) {
array_push($data, $permission);
$subs = Permission::where('parent_id', $permission->id)->get();
foreach ($subs as $sub) {
array_push($data, $sub);
}
}
$role = EloquentRole::find($id);
return view('user.role.edit', compact('data', 'role'));
}
public function updateRole(Request $request, $id)
{
//return print_r($request->permission);
$role = Sentinel::findRoleById($id);
$role->name = $request->name;
$role->slug = str_slug($request->name, '_');
$role->permissions = array();
$role->save();
//remove permissions which have not been ticked
//create and/or update permissions
if (!empty($request->permission)) {
foreach ($request->permission as $key) {
$role->updatePermission($key, true, true)->save();
}
}
GeneralHelper::audit_trail("Updated role with id:" . $id);
Flash::success("Successfully Saved");
return redirect('user/role/data');
}
public function deletePermission($id)
{
Permission::destroy($id);
Flash::success("Successfully Saved");
return redirect('user/permission/data');
}
public function deleteRole($id)
{
EloquentRole::destroy($id);
GeneralHelper::audit_trail("Deleted role with id:" . $id);
Flash::success("Successfully Saved");
return redirect('user/role/data');
}
}