<?php
namespace App\Http\Controllers\API;
use App\Exceptions\HTTPException;
use App\Exceptions\NoPermissionException;
use App\Exceptions\NotLoggedInException;
use App\Exceptions\ResourceNotFound;
use App\Models\User;
use Illuminate\Support\Facades\Auth;
use Laravel\Lumen\Routing\Controller as BaseController;
use TaGeSo\APIResponse\Response;
class AccountController extends BaseController
{
public function getUsers(Response $response) {
if(!Auth::check()) {
throw new NotLoggedInException();
}
if(!Auth::user()->admin) {
throw new NoPermissionException();
$users = User::query()->paginate(100);
$response->setPagination(
$users->currentPage(),
$users->lastPage(),
$users->perPage()
);
return $response->withData(\App\Http\Resources\API\User::collection(($users)));
public function getUser(Response $response, $id) {
if(!(Auth::user()->admin || Auth::user()->id == $id)) {
$user = User::query()->where("id", "=", $id)->first();
if($user == null) {
throw new ResourceNotFound();
return $response->withData(new \App\Http\Resources\API\User($user));