82 lines
2.5 KiB
PHP
82 lines
2.5 KiB
PHP
|
<?php
|
||
|
|
||
|
|
||
|
namespace App\Http\Controllers\API;
|
||
|
|
||
|
use App\Exceptions\HTTPException;
|
||
|
use App\Exceptions\NoPermissionException;
|
||
|
use App\Exceptions\NotLoggedInException;
|
||
|
use App\Exceptions\ResourceNotFound;
|
||
|
use App\Http\Resources\oAuth\AccessToken;
|
||
|
use App\Models\App;
|
||
|
use App\Models\AppAccess;
|
||
|
use App\Models\Setting;
|
||
|
use App\Models\User;
|
||
|
use Illuminate\Support\Facades\Auth;
|
||
|
use Illuminate\Http\Request;
|
||
|
use Laravel\Lumen\Routing\Controller as BaseController;
|
||
|
use ReCaptcha\ReCaptcha;
|
||
|
use TaGeSo\APIResponse\Response;
|
||
|
|
||
|
class UserController extends BaseController
|
||
|
{
|
||
|
/*
|
||
|
* The Password login is just for the WebGUI
|
||
|
*/
|
||
|
public function passwordLogin(Request $request, Response $response)
|
||
|
{
|
||
|
//If Recptache is enabled check it at the beginning
|
||
|
if(Setting::getSettingValue("recaptcha_v2_login")) {
|
||
|
$reCaptcha = new ReCaptcha(Setting::getSettingValue("recaptcha_v2_secret"));
|
||
|
$response = $reCaptcha->verify($request->input("g-recaptcha-response"));
|
||
|
|
||
|
if(!$response->isSuccess()) {
|
||
|
throw new HTTPException(400, "Captcha validation failed");
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
//Validate Input
|
||
|
$this->validate($request, [
|
||
|
'username' => 'required',
|
||
|
'password' => 'required'
|
||
|
]);
|
||
|
|
||
|
//Get User
|
||
|
$user = User::query()->where("username", "=", $request->input("username"))->first();
|
||
|
|
||
|
//Check if a user is found
|
||
|
if($user == null) {
|
||
|
throw new HTTPException("400", "Username or Password wrong");
|
||
|
}
|
||
|
|
||
|
if(!password_verify($request->input("password"), $user->password)) {
|
||
|
throw new HTTPException("400", "Username or Password wrong");
|
||
|
}
|
||
|
|
||
|
//Create Access Permission for WebGUI
|
||
|
$access = AppAccess::getOrCreate($user->id, App::query()->where("name", "=", "PHP-GUI")->firstOrFail()->id);
|
||
|
$token = \App\Models\AccessToken::createToken($access);
|
||
|
|
||
|
//Save Token to Session
|
||
|
$_SESSION["token"] = $token->token;
|
||
|
|
||
|
return new AccessToken($token);
|
||
|
}
|
||
|
|
||
|
public function register(Request $request, Response $response) {
|
||
|
|
||
|
}
|
||
|
|
||
|
/*
|
||
|
* Return Captcha Settings used by the public webpage bevore the user is loggedin
|
||
|
*/
|
||
|
public function reCAPTCHA(Response $response) {
|
||
|
$data = [];
|
||
|
$data["key"] = Setting::getSettingValue("recaptcha_v2_key");
|
||
|
$data["login"] = (bool)Setting::getSettingValue("recaptcha_v2_login");
|
||
|
$data["register"] = (bool)Setting::getSettingValue("recaptcha_v2_register");
|
||
|
return $response->withData($data);
|
||
|
}
|
||
|
}
|