Stuff
This commit is contained in:
parent
8d8cc32b9c
commit
ffa102e597
4 changed files with 100 additions and 6 deletions
11
Readme.md
11
Readme.md
|
@ -12,8 +12,9 @@ Keks Account currently hava a cheap Hacked WebGui
|
||||||
|
|
||||||
# Supportet Software
|
# Supportet Software
|
||||||
|
|
||||||
|
Application | Status | Comment
|
||||||
* Mattermost CE (Gitlab Integration)
|
----------- | -------- | --------
|
||||||
* Gitea (Gitlab Integration)
|
Mattermost CE | Working | Based on the GitLab Integration
|
||||||
* Nextcloud (not worrking correct) (Gitlab Integration)
|
Gitea | Working | Based on the GitLab Integration
|
||||||
* Jenkins (Gitlab Integration)
|
Nextcloud | Working | Based on the GitLab Integration with https://github.com/zorn-v/nextcloud-social-login
|
||||||
|
Jenkins | Working | To authorized user, no right managment ATM
|
|
@ -8,12 +8,16 @@ use App\Exceptions\NoPermissionException;
|
||||||
use App\Exceptions\NotLoggedInException;
|
use App\Exceptions\NotLoggedInException;
|
||||||
use App\Exceptions\ResourceNotFound;
|
use App\Exceptions\ResourceNotFound;
|
||||||
use App\Http\Resources\oAuth\AccessToken;
|
use App\Http\Resources\oAuth\AccessToken;
|
||||||
|
use App\Jobs\Mails\ValidateMailAddressJob;
|
||||||
use App\Models\App;
|
use App\Models\App;
|
||||||
use App\Models\AppAccess;
|
use App\Models\AppAccess;
|
||||||
|
use App\Models\Invite;
|
||||||
|
use App\Models\Mail;
|
||||||
use App\Models\Setting;
|
use App\Models\Setting;
|
||||||
use App\Models\User;
|
use App\Models\User;
|
||||||
use Illuminate\Support\Facades\Auth;
|
use Illuminate\Support\Facades\Auth;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
|
use Illuminate\Support\Facades\DB;
|
||||||
use Laravel\Lumen\Routing\Controller as BaseController;
|
use Laravel\Lumen\Routing\Controller as BaseController;
|
||||||
use ReCaptcha\ReCaptcha;
|
use ReCaptcha\ReCaptcha;
|
||||||
use TaGeSo\APIResponse\Response;
|
use TaGeSo\APIResponse\Response;
|
||||||
|
@ -65,7 +69,60 @@ class UserController extends BaseController
|
||||||
}
|
}
|
||||||
|
|
||||||
public function register(Request $request, Response $response) {
|
public function register(Request $request, Response $response) {
|
||||||
|
//If Recptache is enabled check it at the beginning
|
||||||
|
if(Setting::getSettingValue("recaptcha_v2_register")) {
|
||||||
|
$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");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->validate($request, [
|
||||||
|
'username' => 'required|max:255|min:5|regex:@^[a-z0-9]*$@|unique:users',
|
||||||
|
'password' => 'required|min:8',
|
||||||
|
'mail' => 'required|email|unique:mails'
|
||||||
|
]);
|
||||||
|
|
||||||
|
DB::beginTransaction();
|
||||||
|
|
||||||
|
$user = new User();
|
||||||
|
$user->username = $request->input("username");
|
||||||
|
$user->password = password_hash($request->input("password"), PASSWORD_BCRYPT);
|
||||||
|
|
||||||
|
if($invite != null) {
|
||||||
|
$user->inviteCode = $invite->code;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Make first user an admin
|
||||||
|
$count = User::query()->count("*");
|
||||||
|
if($count == 1) {
|
||||||
|
$user->admin = 1;
|
||||||
|
$user->developer = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
$user->saveOrFail();
|
||||||
|
|
||||||
|
$mail = new Mail();
|
||||||
|
$mail->createValidationToken();
|
||||||
|
$mail->mail = $request->input("mail");
|
||||||
|
$mail->primary = false;
|
||||||
|
$mail->status = "waiting";
|
||||||
|
$mail->user_id = $user->id;
|
||||||
|
|
||||||
|
$mail->saveOrFail();
|
||||||
|
|
||||||
|
$this->dispatch(new ValidateMailAddressJob($mail));
|
||||||
|
|
||||||
|
if($invite != null) {
|
||||||
|
$invite->status = "used";
|
||||||
|
$invite->saveOrFail();
|
||||||
|
}
|
||||||
|
|
||||||
|
DB::commit();
|
||||||
|
|
||||||
|
return $response->withData(new \App\Http\Resources\API\User($user));
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -78,4 +135,23 @@ class UserController extends BaseController
|
||||||
$data["register"] = (bool)Setting::getSettingValue("recaptcha_v2_register");
|
$data["register"] = (bool)Setting::getSettingValue("recaptcha_v2_register");
|
||||||
return $response->withData($data);
|
return $response->withData($data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getInviteCodeInfo(Request $request, Response $response) {
|
||||||
|
$data = [];
|
||||||
|
$invite = Invite::query()->where("code", "=", $request->input("code"))->first();
|
||||||
|
|
||||||
|
if($invite == null) {
|
||||||
|
throw new ResourceNotFound();
|
||||||
|
}
|
||||||
|
|
||||||
|
$usable = false;
|
||||||
|
if($invite->status == "active") {
|
||||||
|
$usable = true;
|
||||||
|
}
|
||||||
|
$data["usable"] = $usable;
|
||||||
|
#$data["status"] = $invite->status;
|
||||||
|
$data["username"] = $invite->username;
|
||||||
|
|
||||||
|
return $response->withData($data);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -32,6 +32,22 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<script language="JavaScript">
|
<script language="JavaScript">
|
||||||
|
|
||||||
|
function getCaptchaConfig() {
|
||||||
|
$.ajax({
|
||||||
|
type: "GET",
|
||||||
|
url: "/api/v1/user/captcha",
|
||||||
|
success: function (res) {
|
||||||
|
captchaConfig = res.data;
|
||||||
|
if(captchaConfig["login"]) {
|
||||||
|
grecaptcha.render('captcha', {
|
||||||
|
'sitekey' : captchaConfig["key"]
|
||||||
|
});
|
||||||
|
}
|
||||||
|
$("#loginButton").removeAttr('disabled');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
$(document).ready(function () {
|
$(document).ready(function () {
|
||||||
console.log("READY");
|
console.log("READY");
|
||||||
$("#register").submit(function (e) {
|
$("#register").submit(function (e) {
|
||||||
|
|
|
@ -50,6 +50,7 @@ $router->group(['prefix' => 'api', 'middleware' => 'auth'], function () use ($ro
|
||||||
});
|
});
|
||||||
$router->post("api/v1/user/login", ['uses' => 'API\UserController@passwordLogin']);
|
$router->post("api/v1/user/login", ['uses' => 'API\UserController@passwordLogin']);
|
||||||
$router->get("api/v1/user/captcha", ['uses' => 'API\UserController@reCAPTCHA']);
|
$router->get("api/v1/user/captcha", ['uses' => 'API\UserController@reCAPTCHA']);
|
||||||
|
$router->get("api/v1/user/invites", ['uses' => 'API\UserController@getInviteCodeInfo']);
|
||||||
|
|
||||||
$router->group(['prefix' => 'gui', 'middleware' => 'gui'], function () use ($router) {
|
$router->group(['prefix' => 'gui', 'middleware' => 'gui'], function () use ($router) {
|
||||||
$router->get('/register', ['uses' => 'GUI\AccountController@registerView']);
|
$router->get('/register', ['uses' => 'GUI\AccountController@registerView']);
|
||||||
|
|
Reference in a new issue