| Server IP : 54.233.248.239 / Your IP : 172.28.1.13 Web Server : Apache System : Linux ip-172-28-29-189 6.5.0-1014-aws #14~22.04.1-Ubuntu SMP Thu Feb 15 15:27:06 UTC 2024 x86_64 User : www-data ( 33) PHP Version : 7.2.34-43+ubuntu22.04.1+deb.sury.org+1 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals, MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /var/www/html/vinumday2_0/app/Http/Controllers/Auth/ |
Upload File : |
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use App\Modules\Cadastro\Models\Cadastro;
use Illuminate\Foundation\Auth\ResetsPasswords;
use Illuminate\Http\Request;
use Illuminate\Mail\Message;
use Illuminate\Support\Facades\Password;
use App\User;
use Illuminate\Support\Facades\Log;
class PasswordController extends Controller
{
/*
|--------------------------------------------------------------------------
| Password Reset Controller
|--------------------------------------------------------------------------
|
| This controller is responsible for handling password reset requests
| and uses a simple trait to include this behavior. You're free to
| explore this trait and override any methods you wish to tweak.
|
*/
use ResetsPasswords;
protected $redirectPath = "admin";
protected $subject = "Alteração de Senha Vinumday";
/**
* Create a new password controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('guest');
}
/**
* Display the form to request a password reset link.
*
* @return \Illuminate\Http\Response
*/
public function recuperarSenha()
{
return view('admin.auth.passwords.recuperar-senha');
}
/**
* Display the form to request a password reset link.
*
* @return \Illuminate\Http\Response
*/
public function getEmail()
{
return view('admin.auth.passwords.email');
}
public function getForgetSuccess()
{
return view('admin.auth.passwords.forget-success');
}
/**
* Send a reset link to the given user.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function recuperarEmail(Request $request)
{
$post = $request->input();
if($request->is('*api*')){
if(!isset($post['email']) || !$post['email']){
return json_encode(array(
'status' => false,
'message' => 'O campo E-mail é obrigatório'
));
}
try {
$this->validate($request, ['email' => 'required|email']);
} catch (\Illuminate\Foundation\Validation\ValidationException $e) {
return json_encode(array(
'status' => false,
'message' => 'O e-mail fornecido é inválido'
));
}
}else{
$this->validate($request, ['email' => 'required|email']);
}
$user = User::where('email', $post['email'])->first();
$response = Password::sendResetLink($request->only('email'), function (Message $message){
$message->subject($this->getEmailSubject());
});
if($request->is('*api*')){
switch ($response) {
case Password::RESET_LINK_SENT:
return json_encode(array(
'status' => true,
'message' => trans($response)
));
case Password::INVALID_USER:
return json_encode(array(
'status' => false,
'message' => trans($response)
));
}
}else{
switch ($response) {
case Password::RESET_LINK_SENT:
/*\Session::flash('type', 'success');
\Session::flash('message', trans($response));*/
return redirect('/admin/forgot_success');
case Password::INVALID_USER:
\Session::flash('type', 'danger');
\Session::flash('message', trans($response));
return redirect()->back()->withErrors(['email' => trans($response)]);
}
}
}
public function mascararEmail($email) {
$partes = explode('@', $email);
$usuario = $partes[0];
$dominio = $partes[1];
// Esconde a parte do usuário (após o primeiro caractere)
$usuarioMascarado = substr($usuario, 0, 3) . str_repeat('*', strlen($usuario) - 3);
return $usuarioMascarado . '@' . $dominio;
}
/**
* Send a reset link to the given user.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function postEmail(Request $request)
{
// return redirect()->back()->withErrors(['email' => 'NÃO.']);
$input = $request->input('email');
$method = '';
if (filter_var($input, FILTER_VALIDATE_EMAIL)) {
$emailUser = User::where('email', $input)->value('email');
$method = 'email';
} elseif (preg_match('/^\d{3}\.\d{3}\.\d{3}-\d{2}$/', $input)) {
$userId = Cadastro::where('cpf', $input)->value('user_id');
$emailUser = User::where('id', $userId)->value('email');
$method = 'cpf';
} else{
return redirect()->back()->withErrors(['email' => 'Informe um e-mail válido ou CPF válido no formato XXX.XXX.XXX-XX']);
}
if($emailUser == ''){
\Session::flash('type', 'success');
\Session::flash('message', 'Caso exista uma conta VinumDay com o e-mail ou CPF informado, será enviado um e-mail para recuperação de senha.');
return redirect()->back()->with('flash_message', 'Caso exista uma conta VinumDay com o e-mail ou CPF informado, será enviado um e-mail para recuperação de senha.');
}
// Enviar link de reset de senha
$response = Password::sendResetLink(['email' => $emailUser], function (Message $message) {
$message->subject($this->getEmailSubject());
});
// Retornar resposta baseado na resposta do envio do link
switch ($response) {
case Password::RESET_LINK_SENT:
if($method == 'email'){
\Session::flash('type', 'success');
\Session::flash('message', 'E-mail de recuperação enviado com sucesso!');
return redirect()->back()->with('flash_message', 'E-mail de recuperação enviado com sucesso!');
} else{
$emailMascarado = $this->mascararEmail($emailUser);
\Session::flash('type', 'success');
\Session::flash('message', "E-mail de recuperação enviado com sucesso para ${emailMascarado}");
return redirect()->back()->with('flash_message', "E-mail de recuperação enviado com sucesso para ${emailMascarado}");
}
case Password::INVALID_USER:
\Session::flash('type', 'danger');
\Session::flash('message', trans($response));
return redirect()->back()->withErrors(['email' => trans($response)]);
}
}
/**
* Display the password reset view for the given token.
*
* @param string $token
* @return \Illuminate\Http\Response
*/
public function getReset($token = null)
{
if (is_null($token)) {
throw new NotFoundHttpException;
}
return view('admin.auth.passwords.reset')->with('token', $token);
}
/**
* Reset the given user's password.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function postReset(Request $request)
{
$error = $this->validate($request, [
'token' => 'required',
'email' => 'required|email',
'password' => 'required|confirmed',
]);
$credentials = $request->only(
'email', 'password', 'password_confirmation', 'token'
);
$response = Password::reset($credentials, function ($user, $password) {
$this->resetPassword($user, \Hash::make($password));
});
switch ($response) {
case Password::PASSWORD_RESET:
\Session::flash('type', 'success');
\Session::flash('message', 'Senha alterada com sucesso!');
return redirect('/');
//->withFlashMessage('Password Reset Successfully!');
default:
\Session::flash('type', 'danger');
\Session::flash('message', trans($response));
return redirect()->back()
->withInput($request->only('email'))
->withErrors(['email' => trans($response)]);
}
}
/**
* Reset the given user's password.
*
* @param \Illuminate\Contracts\Auth\CanResetPassword $user
* @param string $password
* @return void
*/
protected function resetPassword($user, $password)
{
//$user->password = bcrypt($password);
// Sentry hashes password for us
$user->password = $password;
$user->save();
//Auth::login($user);
}
}