working on a new admin dashboard
This commit is contained in:
@@ -30,6 +30,10 @@ class AdminController extends Controller
|
||||
$this->middleware('role:Admin');
|
||||
}
|
||||
|
||||
public function displayTestAdminDashboard() {
|
||||
return view('admin.dashboards.testdashboard');
|
||||
}
|
||||
|
||||
public function showJournalEntries() {
|
||||
$dateInit = Carbon::now();
|
||||
$date = $dateInit->subDays(30);
|
||||
|
||||
16
public/css/admin/navbar.css
vendored
Normal file
16
public/css/admin/navbar.css
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
.wrapper {
|
||||
display: flex;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
#sidebar {
|
||||
width: 250px;
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
height: 100vh;
|
||||
z-index: 999;
|
||||
background: #7386D5;
|
||||
color: #fff;
|
||||
transition: all 0.3s;
|
||||
}
|
||||
@@ -1,353 +0,0 @@
|
||||
@extends('admin.layouts.b4')
|
||||
@section('content')
|
||||
|
||||
<div class="container">
|
||||
<div class="row justify-content-center">
|
||||
<h2> Admin Dashboard</h2>
|
||||
</div>
|
||||
</div>
|
||||
<br>
|
||||
<nav>
|
||||
<ul class="nav nav-tabs">
|
||||
<li class="nav-item active"><a class="nav-link active" data-toggle="tab" href="#user">User</a></li>
|
||||
<li class="nav-item"><a class="nav-link" data-toggle="tab" href="#logins">Login</a></li>
|
||||
<li class="nav-item"><a class="nav-link" data-toggle="tab" href="#wiki">Wiki</a></li>
|
||||
<li class="nav-item"><a class="nav-link" data-toggle="tab" href="#taxes">Taxes</a></li>
|
||||
</ul>
|
||||
<br>
|
||||
<div class="tab-content">
|
||||
<div id="user" class="tab-pane active">
|
||||
<div class="container-fluid">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
User Information
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<table class="table table-striped table-bordered">
|
||||
<thead>
|
||||
<th>Name</th>
|
||||
<th>Role</th>
|
||||
<th>Permissions</th>
|
||||
<th>Action</th>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach($userArr as $user)
|
||||
<tr>
|
||||
<td>{{ $user['name'] }}</td>
|
||||
<td>{{ $user['role'] }}</td>
|
||||
<td>
|
||||
@if($user['permissions'])
|
||||
@foreach($user['permissions'] as $perm)
|
||||
{{ implode(', ', $perm) }}
|
||||
@endforeach
|
||||
@else
|
||||
No Permissions
|
||||
@endif
|
||||
</td>
|
||||
<td>
|
||||
{!! Form::open(['action' => 'Dashboard\AdminController@displayModifyUser', 'method' => 'POST']) !!}
|
||||
{{ Form::hidden('user', $user['name']) }}
|
||||
{{ Form::submit('Modify User', ['class' => 'btn btn-primary']) }}
|
||||
{!! Form::close() !!}
|
||||
{!! Form::open(['action' => 'Dashboard\AdminController@removeUser', 'method' => 'POST']) !!}
|
||||
{{ Form::hidden('user', $user['name']) }}
|
||||
{{ Form::submit('Remove User', ['class' => 'btn btn-danger']) }}
|
||||
{!! Form::close() !!}
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="logins" class="tab-pane fade">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
Add Allowed Login
|
||||
</div>
|
||||
<div class="card-body">
|
||||
{!! Form::open(['action' => 'Dashboard\AdminController@addAllowedLogin', 'method' => 'POST']) !!}
|
||||
<div class="form-group">
|
||||
{{ Form::label('allowedEntityId', 'Allowed Entity ID') }}
|
||||
{{ Form::text('allowedEntityId', '', ['class' => 'form-control']) }}
|
||||
</div>
|
||||
<div class="form-group">
|
||||
{{ Form::label('allowedEntityType', 'Allowed Entity Type') }}
|
||||
{{ Form::select('allowedEtntityType', ['Corporation' => 'Corporation', 'Alliance' => 'Alliance'], null, ['class' => 'form-control']) }}
|
||||
</div>
|
||||
<div class="form-group">
|
||||
{{ Form::label('allowedEntityName', 'Allowed Entity Name') }}
|
||||
{{ Form::text('allowedEntityName', '', ['class' => 'form-control']) }}
|
||||
</div>
|
||||
<div class="form-group">
|
||||
{{ Form::label('allowedLoginType', 'Allowed Login Type') }}
|
||||
{{ Form::select('allowedLoginType', ['Legacy' => 'Legacy', 'Renter' => 'Renter'], null, ['class' => 'form-control']) }}
|
||||
</div>
|
||||
{{ Form::submit('Submit', ['class' => 'btn btn-primary']) }}
|
||||
{!! Form::close() !!}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
Remove Allowed Login
|
||||
</div>
|
||||
<div class="card-body">
|
||||
{!! Form::open(['action' => 'Dashboard\AdminController@removeAllowedLogin', 'method' => 'POST']) !!}
|
||||
<div class="form-group">
|
||||
{{ Form::label('removeAllowedLogin', 'Remove Entity') }}
|
||||
{{ Form::select('removeAllowedLogin', $entities, null, ['class' => 'form-control']) }}
|
||||
</div>
|
||||
{{ Form::submit('Submit', ['class' => 'btn btn-primary']) }}
|
||||
{!! Form::close() !!}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="wiki" class="tab-pane fade">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
{!! Form::open(['action' => 'Wiki\WikiController@purgeUsers', 'method' => 'POST']) !!}
|
||||
<div class="form-group">
|
||||
{{ Form::label('admin', 'This action will log the administrator who peformed the action.') }}
|
||||
{{ Form::hidden('admin', auth()->user()->character_id) }}
|
||||
</div>
|
||||
{{ Form::submit('Purge Wiki', ['class' => 'btn btn-primary']) }}
|
||||
{!! Form::close() !!}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="taxes" class="tab-pane fade">
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
PI Taxes
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<table class="table table-striped table-bordered">
|
||||
<thead>
|
||||
<th>Month</th>
|
||||
<th>PI Taxes</th>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach($pis as $pi)
|
||||
<tr>
|
||||
<td>{{ $pi['date'] }}</td>
|
||||
<td>{{ $pi['gross'] }}</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
Office Taxes
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<table class="table table-striped table-bordered">
|
||||
<thead>
|
||||
<th>Month</th>
|
||||
<th>Office Taxes</th>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach($offices as $office)
|
||||
<tr>
|
||||
<td>{{ $office['date'] }}</td>
|
||||
<td>{{ $office['gross'] }}</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
Industry Taxes
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<table class="table table-striped table-bordered">
|
||||
<thead>
|
||||
<th>Month</th>
|
||||
<th>Industry Taxes</th>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach($industrys as $industry)
|
||||
<tr>
|
||||
<td>{{ $industry['date'] }}</td>
|
||||
<td>{{ $industry['gross'] }}</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<br>
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
Reprocessing Taxes
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<table class="table table-striped table-bordered">
|
||||
<thead>
|
||||
<th>Month</th>
|
||||
<th>Reprocessing Taxes</th>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach($reprocessings as $reprocessing)
|
||||
<tr>
|
||||
<td>{{ $reprocessing['date'] }}</td>
|
||||
<td>{{ $reprocessing['gross'] }}</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
Market Taxes
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<table class="table table-striped table-bordered">
|
||||
<thead>
|
||||
<th>Month</th>
|
||||
<th>Market Taxes</th>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach($markets as $market)
|
||||
<tr>
|
||||
<td>{{ $market['date'] }}</td>
|
||||
<td>{{ $market['gross'] }}</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
Jump Gate Taxes
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<table class="table table-striped table-bordered">
|
||||
<thead>
|
||||
<th>Month</th>
|
||||
<th>Jump Gate Taxes</th>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach($jumpgates as $jumpgate)
|
||||
<tr>
|
||||
<td>{{ $jumpgate['date'] }}</td>
|
||||
<td>{{ $jumpgate['gross'] }}</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<br>
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
PI Transactions
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<table class="table table-striped table-bordered">
|
||||
<thead>
|
||||
<th>Month</th>
|
||||
<th>PI Transactions</th>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach($pigross as $pi)
|
||||
<tr>
|
||||
<td>{{ $pi['date'] }}</td>
|
||||
<td>{{ $pi['gross'] }}</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
SRP Actual Paid Out
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<table class="table table-striped table-bordered">
|
||||
<thead>
|
||||
<th>Month</th>
|
||||
<th>SRP Actual</th>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach($srpActual as $actual)
|
||||
<tr>
|
||||
<td>{{ $actual['date'] }}</td>
|
||||
<td>{{ $actual['gross'] }}</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
SRP Loss Values
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<table class="table table-striped table-bordered">
|
||||
<thead>
|
||||
<th>Month</th>
|
||||
<th>SRP Loss</th>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach($srpLoss as $loss)
|
||||
<tr>
|
||||
<td>{{ $loss['date'] }}</td>
|
||||
<td>{{ $loss['gross'] }}</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@endsection
|
||||
9
resources/views/admin/dashboards/testdashboard.blade.php
Normal file
9
resources/views/admin/dashboards/testdashboard.blade.php
Normal file
@@ -0,0 +1,9 @@
|
||||
@extends('layouts.admin.b4')
|
||||
@section('content')
|
||||
|
||||
<div class="container">
|
||||
<div class="row justify-content-center">
|
||||
<h2> Admin Dashboard</h2>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
80
resources/views/layouts/admin/b4.blade.php
Normal file
80
resources/views/layouts/admin/b4.blade.php
Normal file
@@ -0,0 +1,80 @@
|
||||
<!doctype html>
|
||||
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
|
||||
<head>
|
||||
<!-- Global site tag (gtag.js) - Google Analytics -->
|
||||
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-140677389-1"></script>
|
||||
<script>
|
||||
window.dataLayer = window.dataLayer || [];
|
||||
function gtag(){dataLayer.push(arguments);}
|
||||
gtag('js', new Date());
|
||||
|
||||
gtag('config', 'UA-140677389-1');
|
||||
</script>
|
||||
|
||||
<title>{{ config('app.name', 'W4RP Services') }}</title>
|
||||
<!-- Required meta tags -->
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
|
||||
<!-- CSRF Token -->
|
||||
<meta name="csrf-token" content="{{ csrf_token() }}">
|
||||
|
||||
<!-- Bootstrap CSS
|
||||
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.2/css/bootstrap.min.css" integrity="sha384-Smlep5jCw/wG7hdkwQ/Z5nLIefveQRIY9nfy6xoR1uRYBtpZgI6339F5dgvm/e9B" crossorigin="anonymous">
|
||||
-->
|
||||
<link rel="stylesheet" href="{{ asset('css/app.css') }}">
|
||||
<link rel="stylesheet" href="{{ asset('css/bootstrap.css') }}">
|
||||
<!-- Custom stylesheet for navbar -->
|
||||
<link ref="stylesheet" href="{{ asset('css/admin/navbar.css') }}">
|
||||
<!-- Scrollbar Custom CSS -->
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/malihu-custom-scrollbar-plugin/3.1.5/jquery.mCustomScrollbar.min.css">
|
||||
</head>
|
||||
<body>
|
||||
@include('layouts.admin.navbar')
|
||||
<!-- Page Content -->
|
||||
<div id="content">
|
||||
<nav class="navbar navbar-expand-lg navbar-light bg-light">
|
||||
<div class="container-fluid">
|
||||
<button type="button" id="sidebarCollapse" class="btn btn-info">
|
||||
<i class="fas fa-align-left"></i>
|
||||
<span>Toggle Sidebar</span>
|
||||
</button>
|
||||
</div>
|
||||
</nav>
|
||||
</div>
|
||||
<!-- Included Messages -->
|
||||
<div class="container">
|
||||
@include('inc.messages')
|
||||
</div>
|
||||
<!-- Content of the Page -->
|
||||
@yield('content')
|
||||
|
||||
|
||||
|
||||
<!-- Optional JavaScript -->
|
||||
<!-- jQuery first, then Popper.js, then Bootstrap JS -->
|
||||
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
|
||||
<!-- Popper.JS -->
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
|
||||
<!-- Bootstrap JS -->
|
||||
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
|
||||
<!-- jQuery Custom Scroller CDN -->
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/malihu-custom-scrollbar-plugin/3.1.5/jquery.mCustomScrollbar.concat.min.js"></script>
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
$("#sidebar").mCustomScrollbar({
|
||||
theme: "minimal"
|
||||
})
|
||||
|
||||
$('#sidebarCollapse').on('click', function() {
|
||||
//Open or close the navbar
|
||||
$('#sidebar').toggleClass('active');
|
||||
//Close the dropdown
|
||||
$('.collapse.in').toggleClass('in');
|
||||
//Adjust aria-expanded attributes we use for the open/clossed arrows in our CSS
|
||||
$('a[aria-expanded=true]').attr('aria-expanded', 'false');
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
97
resources/views/layouts/admin/navbar.blade.php
Normal file
97
resources/views/layouts/admin/navbar.blade.php
Normal file
@@ -0,0 +1,97 @@
|
||||
<div class="wrapper">
|
||||
<!-- Sidebar -->
|
||||
<nav id="sidebar">
|
||||
<div id="dismiss">
|
||||
<i class="fas fa-arrow-left"></i>
|
||||
</div>
|
||||
<div class="sidebar-header">
|
||||
<h3>W4RP</h3>
|
||||
</div>
|
||||
<ul class="list-unstyled components">
|
||||
<p>Admin Dashboard</p>
|
||||
@if(auth()->user()->hasRole('Admin'))
|
||||
<li class="active">
|
||||
<a href="#adminSubmenu" data-toggle="collapse" aria-expanded="false">General</a>
|
||||
<ul class="collapse list-unstyled" id="adminSubmenu">
|
||||
<li>
|
||||
<a href="/admin/dashboard/users">Users</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="/admin/dashboard/taxes">Taxes</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="/admin/dashboard/logins">Allowed Logins</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="/admin/dashboard/wiki">Wiki</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="/admin/dashboard/journal">Wallet Journal</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="active">
|
||||
<a href="#flexSubmenu" data-toggle="collapse" aria-expanded="false">Flex</a>
|
||||
<ul class="collapse list-unstyled" id="flexSubmenu">
|
||||
<li>
|
||||
<a href="/flex/display">Display</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="/flex/display/add">Add</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
@endif
|
||||
@if(auth()->user()->hasPermission('moon.admin'))
|
||||
<li class="active">
|
||||
<a href="#moonSubmenu" data-toggle="collapse" aria-expanded="false">Moons</a>
|
||||
<ul class="collapse list-unstyled" id="moonSubmenu">
|
||||
<li>
|
||||
<a href="/moons/admin/display/rentals">Display Moons</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="/moons/admin/updatemoon">Update Moon</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="/moons/admin/display/request">Moon Request</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
@endif
|
||||
@if(auth()->user()->hasPermission('srp.admin'))
|
||||
<li class="active">
|
||||
<a href="#srpSubmenu" data-toggle="collapse" aria-expanded="false">SRP</a>
|
||||
<ul class="collapse list-unstyled" id="srpSubmenu">
|
||||
<li>
|
||||
<a href="/srp/admin/display">SRP Admin Dashboard</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="/srp/admin/statistics">SRP Statistics</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="/srp/admin/costcodes/display">SRP Admin Cost Codes</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="/srp/admin/display/history">SRP History</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
@endif
|
||||
@if(auth()->user()->hasPermission('contract.admin'))
|
||||
<li class="active">
|
||||
<a href="#contractSubmenu" data-toggle="collapse" aria-expanded="false">Contracts</a>
|
||||
<ul class="collapse list-unstyled" id="contractSubmenu">
|
||||
<li>
|
||||
<a href="/contracts/admin/display">Contract Admin</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="/contracts/admin/new">New Contract</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
@endif
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
<!-- Page Content -->
|
||||
</div>
|
||||
@@ -50,6 +50,7 @@ Route::group(['middleware' => ['auth']], function(){
|
||||
Route::post('/admin/dashboard/wiki/removeallgroups', 'Dashboard\AdminController@removeWikiUserAllGroups');
|
||||
Route::post('/admin/dashboard/wiki/newgroup', 'Dashboard\AdminController@insertNewWikiUserGroup');
|
||||
Route::post('/admin/dashboard/wiki/purge', 'Dashboard\AdminController@purgeWikiUsers');
|
||||
Route::get('/admin/dashboard/test', 'Dashboard\AdminController@displayTestAdminDashboard');
|
||||
|
||||
/**
|
||||
* Blacklist Controller display pages
|
||||
|
||||
Reference in New Issue
Block a user