You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
84 lines
2.5 KiB
84 lines
2.5 KiB
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use App\Traits\Authorizable;
|
|
use App\Models\Post;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\Auth;
|
|
use phpseclib3\Crypt\RSA;
|
|
use phpseclib3\Crypt\PublicKeyLoader;
|
|
use App\Models\User;
|
|
|
|
class KeygenController extends Controller
|
|
{
|
|
use Authorizable;
|
|
|
|
/**
|
|
* Display a listing of the resource.
|
|
*
|
|
* @return \Illuminate\Http\Response
|
|
*/
|
|
public function index()
|
|
{
|
|
// $rsa = new RSA();
|
|
$keys = RSA::createKey(1024);
|
|
// dd($keys);
|
|
$publicKey = $keys->getPublicKey();
|
|
$privateKey = $keys;
|
|
return view('keygen.index', compact('publicKey', 'privateKey'));
|
|
}
|
|
|
|
public function descrypt() {
|
|
return view('keygen.descrypt');
|
|
}
|
|
|
|
public function descryption(Request $request)
|
|
{
|
|
$private = file_get_contents('key.pem');;
|
|
|
|
$ciphertext = $request->ciphertext;
|
|
|
|
$private = openssl_get_privatekey($private, "phrase");
|
|
|
|
openssl_private_decrypt(base64_decode($ciphertext), $plaintext, $private);
|
|
|
|
return view('keygen.descrypt', compact('plaintext', 'ciphertext'));
|
|
}
|
|
|
|
public function login(Request $request) {
|
|
$private = file_get_contents('key.pem');
|
|
|
|
if(empty($request->password) || $request->password != env('BSR_DEFAULT_PASSWORD', '1qaz2wsxA@')) {
|
|
return response()->json(['request' => $request->all(), 'error' => 1, 'message' => "Password invalid"], 200);
|
|
}
|
|
|
|
$ciphertext = $request->ciphertext;
|
|
|
|
$private = openssl_get_privatekey($private, "phrase");
|
|
|
|
openssl_private_decrypt(base64_decode($ciphertext), $plaintext, $private);
|
|
|
|
$info = json_decode($plaintext);
|
|
|
|
$user = User::where('email', $info->usFingerprint)
|
|
->orWhere('login_name', $info->usFingerprint)
|
|
->orWhere('user_code', $info->usFingerprint)
|
|
->first();
|
|
|
|
if(empty($user)) {
|
|
return response()->json(['request' => $request->all(), 'error' => 1, 'message' => "Email invalid"], 200);
|
|
}
|
|
|
|
// Creating a token without scopes...
|
|
$token = $user->createToken($user->id . ' token ' . time(), ['*'])->accessToken;
|
|
|
|
$data['access_token'] = $token;
|
|
$data['token_type'] = 'Bearer';
|
|
$data['expires_in'] = 1296000;
|
|
$data['refresh_token'] = $token;
|
|
|
|
// return response()->json(['data' => $data, 'request' => $request->all(), 'error' => 0, 'message' => "Đăng nhập thành công"], 200);
|
|
return response()->json($data, 200);
|
|
}
|
|
}
|
|
|