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

<?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);
}
}