Skip to content

Instantly share code, notes, and snippets.

@Ryahn
Created August 24, 2020 22:33
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Ryahn/4e9a0f32eb11d00319c0e35bdaf863d3 to your computer and use it in GitHub Desktop.
Save Ryahn/4e9a0f32eb11d00319c0e35bdaf863d3 to your computer and use it in GitHub Desktop.
<?php
namespace App\Http\Controllers;
use App\Models\User;
use Illuminate\Http\Request;
use DataTables;
class UserController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index(Request $request)
{
if ($request->ajax()) {
$data = User::query();
return Datatables::eloquent($data)
->addIndexColumn()
->editColumn('updated_at', function (User $user) {
return $user->updated_at->diffForHumans();
})
->editColumn('created_at', function (User $user) {
return $user->created_at->diffForHumans();
})
->addColumn('clan', function (User $user) {
return $user->clan();
})
->addColumn('leader', function (User $user) {
if ($user->isLeader()) {
$html = '<span class="label label-danger label-inline">Yes</span>';
} else {
$html = '<span class="label label-success label-inline">No</span>';
}
return $html;
})
->addColumn('role', function (User $user) {
// return $user->roles->map(function($role) {
// if($role->name == 'Admin') {
// $rname = '<span class="label label-danger label-inline">'. $role->name .'</span>';
// } else {
// $rname = '<span class="label label-primary label-inline">'. $role->name .'</span>';
// }
// return $rname;
// })->implode(' ');
$btn = '<button class="btn btn-success btn-sm" id="rolesbtn" data-user-id="' . $user->id . '">Show Roles</button>';
return $btn;
})
->addColumn('action', function (User $user) {
$btn = '
<a href="' . route('users.addAlt', $user->id) . '" class="edit btn btn-primary btn-sm">Add ALT</a>
<a href="' . route('users.edit', $user->id) . '" class="edit btn btn-success btn-sm">Edit</a>
<button data-url="' . route('users.delete', $user->id) . '" id="deleteUser" class="delete btn btn-danger btn-sm">Delete</button>
';
return $btn;
})
->rawColumns(['action', 'role', 'leader'])
->toJson();
}
$pageData = [
'title' => 'Users',
];
return view('user.index', compact('pageData'));
}
public function rolesModal($id)
{
$user = User::findOrFail($id);
// return $user;
$data = $user->roles->map(function ($role) {
if ($role->name == 'Admin') {
$rname = '<span class="label label-danger label-inline">' . $role->name . '</span>';
} else {
$rname = '<span class="label label-primary label-inline">' . $role->name . '</span>';
}
return $rname;
})->implode('');
return [
'username' => $user->username,
'id' => $user->id,
'data' => $data
];
}
public function login()
{
if (env('APP_ENV') === 'local') {
$user = App\Models\User::find(env('ADMIN_USER_ID'));
Auth::login($user);
return redirect('/home');
}
$redirect_url = urlencode('http://nga.test/openid/auth');
$url = "https://api.worldoftanks.com/wot/auth/login/?application_id=67942732fd8eb7cca379240d4ee9e31e&redirect_uri=$redirect_url";
return redirect($url, 302);
}
public function openid()
{
if (request()->status !== 'ok') throw new Exception('Could not log in as user!');
$user_id = request()->account_id;
$password = Hash::make(str_random(16));
$data = [
'username' => request()->nickname,
'access_token' => request()->access_token,
'id' => $user_id,
'expires_at' => request()->expires_at,
'password' => $password
];
$u = User::updateOrCreate(['id' => $user_id], $data);
Auth::login($u, true);
return redirect('/dashboard');
}
public function dashboard()
{
return redirect('/dashboard');
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
//
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
//
}
/**
* Display the specified resource.
*
* @param \App\Models\User $user
* @return \Illuminate\Http\Response
*/
public function show(User $user)
{
//
}
/**
* Show the form for editing the specified resource.
*
* @param \App\Models\User $user
* @return \Illuminate\Http\Response
*/
public function edit(User $user)
{
//
}
/**
* Show the form for editing the specified resource.
*
* @param \App\Models\User $user
* @return \Illuminate\Http\Response
*/
public function addAlt(User $user)
{
//
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param \App\Models\User $user
* @return \Illuminate\Http\Response
*/
public function update(Request $request, User $user)
{
//
}
/**
* Remove the specified resource from storage.
*
* @param \App\Models\User $user
* @return \Illuminate\Http\Response
*/
public function destroy(User $id)
{
$id->delete();
// flash('User ' . $id->username . ' has been deleted!')->success();
// return redirect()->back();
return $id->username;
}
public function deletedUsers(Request $request)
{
if ($request->ajax()) {
$data = User::onlyTrashed();
return Datatables::eloquent($data)
->addIndexColumn()
->editColumn('updated_at', function (User $user) {
return $user->updated_at->diffForHumans();
})
->editColumn('created_at', function (User $user) {
return $user->created_at->diffForHumans();
})
->editColumn('deleted_at', function (User $user) {
return $user->deleted_at->diffForHumans();
})
->addColumn('action', function (User $user) {
$btn = '
<button data-userid="' . $user->id . '" class="btn btn-warning font-weight-bold btn-sm" id="restoreUserBtn">Restore</button>
';
return $btn;
})
->rawColumns(['action'])
->toJson();
}
$pageData = [
'title' => 'Users',
];
return view('user.deletedUsers', compact('pageData'));
}
public function restoreUser(User $id)
{
return $id;
// if ($id->restore()) {
// return "User: " . $id->username . " has been restored!";
// }
// return "Could not restart: " . $id->username;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment