Admin User Managment

This commit is contained in:
Kekskurse 2019-04-25 14:19:16 +02:00
parent 1ba06fcda8
commit 0d033078e7
7 changed files with 163 additions and 51 deletions

View File

@ -24,15 +24,6 @@ class AdminController extends Controller
{
//
}
public function listMails() {
if(!Auth::user()->admin) {
throw new HTTPException("Need Admin Access");
}
$mails = Mail::query()->get("*");
return view('admin/mails_list', ["mails"=>$mails]);
}
public function inviteView() {
if(!Auth::user()->admin) {
throw new HTTPException("Need Admin Access");
@ -133,5 +124,41 @@ class AdminController extends Controller
}
public function listUser() {
if(!Auth::user()->admin) {
throw new HTTPException("Need Admin Access");
}
$users = User::query()->get();
return view('admin/user_list', ["msg"=>"", "users" => $users]);
}
public function userDetails($id) {
if(!Auth::user()->admin) {
throw new HTTPException("Need Admin Access");
}
$user = User::query()->where("id", "=", $id)->firstOrFail();
$mails = Mail::query()->where("user_id", "=", $id)->get();
return view('admin/user_details', ["msg"=>"", "editUser" => $user, "mails" => $mails]);
}
public function saveUserDetails(Request $request, $id) {
if(!Auth::user()->admin) {
throw new HTTPException("Need Admin Access");
}
$user = User::query()->where("id", "=", $id)->firstOrFail();
$user->admin = (bool)$request->input("admin", false);
$user->developer = (bool)$request->input("developer", false);
$user->username = $request->input("username");
$user->saveOrFail();
return redirect("/gui/admin/users/".$id);
}
//
}

View File

@ -35,7 +35,7 @@ class AppController extends Controller
'url' => 'required|url'
]);
$app = App::createApp($request->input("name"), $request->input("description"), $request->input("url"), Auth::user());
$app = App::createApp($request->input("name"), htmlspecialchars($request->input("description")), $request->input("url"), Auth::user());
return "App created";
}
@ -68,7 +68,7 @@ class AppController extends Controller
}
$app->name = $request->input("name");
$app->description = $request->input("description");
$app->description = htmlspecialchars($request->input("description"));
$app->url = $request->input("url");
$app->direct_url = $request->input("direct_url");

View File

@ -1,32 +0,0 @@
<?php include(__DIR__."/../layout/top.php"); ?>
<div class="row">
<div class="col-md-12">
<h3>E-Mail adresses</h3>
<table class="table">
<tr>
<th>User ID</th>
<th>Mail</th>
<th>Actions</th>
</tr>
<?php
foreach($mails as $mail) {
?>
<tr>
<td><?php echo $mail->user_id; ?></td>
<td><?php echo $mail->mail; ?></td>
<td>
<?php
if($mail->status == "waiting") {
echo '<a href="/gui/mailValidation/'.$mail->id.'/'.$mail->validation_code.'" class="btn btn-danger btn-sm">Aktivieren</a>';
}
?>
</td>
</tr>
<?php
}
?>
</table>
</div>
</div>
<?php include(__DIR__."/../layout/bottom.php"); ?>

View File

@ -0,0 +1,54 @@
<?php include(__DIR__."/../layout/top.php"); ?>
<div class="row">
<div class="col-md-12">
<h3>Users</h3>
<form method="post">
<table class="table">
<tr>
<th>Username</th>
<td><input name="username" value="<?php echo $editUser->username; ?>" class="form-control"></td>
</tr>
<tr>
<th>Primary Mail</th>
<td><input name="" value="<?php echo $editUser->getMail(); ?>" class="form-control" disabled></td>
</tr>
<tr>
<th>Developer</th>
<td><input name="developer" type="checkbox" <?php if($editUser->developer) { echo 'checked'; } ?>></td>
</tr>
<tr>
<th>Admin</th>
<td><input name="admin" type="checkbox" <?php if($editUser->admin) { echo 'checked'; } ?>></td>
</tr>
</table>
<input type="submit" value="Save" class="btn btn-warning">
</form>
<h4>Mails</h4>
<table class="table">
<tr>
<th>#</th>
<th>Mail</th>
<th>Status</th>
<th>Actions</th>
</tr>
<?php
foreach($mails as $mail) {
?>
<tr>
<td><?php echo $mail->id; ?></td>
<td><?php echo $mail->mail; ?></td>
<td><?php echo $mail->status ?></td>
<td>
<?php
if($mail->status == "waiting") {
echo '<a href="/gui/mailValidation/'.$mail->id.'/'.$mail->validation_code.'" class="btn btn-danger btn-sm">Aktivieren</a>';
}
?>
</td>
</tr>
<?php } ?>
</table>
</div>
</div>
<?php include(__DIR__."/../layout/bottom.php"); ?>

View File

@ -0,0 +1,49 @@
<?php include(__DIR__."/../layout/top.php"); ?>
<div class="row">
<div class="col-md-12">
<h3>Users</h3>
<table class="table">
<tr>
<th>#</th>
<th>Username</th>
<th>Status</th>
<th>Primary Mail</th>
<th>Flags</th>
<th>Actions</th>
</tr>
<?php
foreach($users as $user) {
?>
<tr>
<td><?php echo $user->id; ?></td>
<td><?php echo $user->username; ?></td>
<td><?php echo $user->status; ?></td>
<td><?php echo $user->getMail(); ?></td>
<td>
<?php
if($user->developer) {
echo '<i class="fas fa-laptop-code"></i>';
}
if($user->admin) {
echo '<i class="fas fa-user-shield"></i>';
}
?>
</td>
<td><a href="/gui/admin/users/<?php echo $user->id; ?>" class="btn btn-warning btn-sm">Edit</a> </td>
</tr>
<?php
}
?>
</table>
<br>
Flags:<br>
<i class="fas fa-user-shield"></i> = Admin<br>
<i class="fas fa-laptop-code"></i> = Developer
</div>
</div>
<?php include(__DIR__."/../layout/bottom.php"); ?>

View File

@ -54,12 +54,11 @@
</a>
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
<a class="dropdown-item" href="/gui/admin/settings">Settings</a>
<a class="dropdown-item disabled" href="#">Users</a>
<a class="dropdown-item" href="/gui/admin/users">Users</a>
<a class="dropdown-item" href="/gui/admin/apps">Apps</a>
<?php if($settingsArray["invites"]) {
echo '<a class="dropdown-item" href="/gui/admin/invites">Invites</a>';
}?>
<a class="dropdown-item" href="/gui/admin/mails">E-Mail Adressen</a>
</div>
</li>
<?php } ?>

View File

@ -15,6 +15,22 @@ $router->get('/', ['middleware' => 'gui', 'uses' => 'GUI\PublicController@index'
$router->get('/api/v4/user', ['uses' => 'oAuthController@getUserTMP']);
$router->get('/api/v4/groups', ['uses' => 'oAuthController@getGroupsTMP']);
//Gitlab like oauth
$router->group(['prefix' => 'gitlab', 'middleware' => 'gui'], function () use ($router) {
});
//Oauth URLS
$router->group(['prefix' => 'oauth'], function () use ($router) {
$router->get("/authorize", ['middleware' => 'gui', 'uses' => 'oAuthController@authorizeView']);
$router->post("/authorize", ['middleware' => 'gui', 'uses' => 'oAuthController@authorizeDo']);
$router->post("/token", ['uses' => 'oAuthController@token']);
});
//Internal API
$router->group(['prefix' => 'api'], function () use ($router) {
});
$router->group(['prefix' => 'gui', 'middleware' => 'gui'], function () use ($router) {
$router->get('/register', ['uses' => 'GUI\AccountController@registerView']);
@ -36,7 +52,6 @@ $router->group(['prefix' => 'gui', 'middleware' => 'gui'], function () use ($rou
//Admin
$router->get("/admin/mails", ['uses' => 'GUI\AdminController@listMails']);
$router->get("/admin/settings", ['uses' => 'GUI\AdminController@settingsView']);
$router->post("/admin/settings", ["uses" => "GUI\AdminController@saveSettings"]);
$router->get("/admin/apps", ["uses" => "GUI\AdminController@appList"]);
@ -45,6 +60,11 @@ $router->group(['prefix' => 'gui', 'middleware' => 'gui'], function () use ($rou
$router->get("/admin/invites", ["uses" => "GUI\AdminController@inviteView"]);
$router->get("/admin/invites/new", ["uses" => "GUI\AdminController@inviteNewView"]);
$router->post("/admin/invites/new", ["uses" => "GUI\AdminController@inviteNew"]);
$router->get("/admin/users", ["uses" => 'GUI\AdminController@listUser']);
$router->get("/admin/users/{id}", ["uses" => 'GUI\AdminController@userDetails']);
$router->post("/admin/users/{id}", ["uses" => 'GUI\AdminController@saveUserDetails']);
$router->get('user/profile', function () {
// Uses Auth Middleware
@ -58,8 +78,3 @@ $router->group(['prefix' => 'gui', 'middleware' => 'gui'], function () use ($rou
});*/
$router->group(['prefix' => 'oauth'], function () use ($router) {
$router->get("/authorize", ['middleware' => 'gui', 'uses' => 'oAuthController@authorizeView']);
$router->post("/authorize", ['middleware' => 'gui', 'uses' => 'oAuthController@authorizeDo']);
$router->post("/token", ['uses' => 'oAuthController@token']);
});