Unverified Commit e5f68efa authored by Laboratório Multidisciplinar de Tecnologias Sociais's avatar Laboratório Multidisciplinar de Tecnologias Sociais Committed by GitHub
Browse files

Merge pull request #881 from LuisFRL01/feature/case-sensitive-email

Retirando case sensitive de email em login e redefinição de senha
parents 94a59ba9 048b4e5a
......@@ -38,7 +38,7 @@ use Illuminate\Validation\Rule;
use PDF;
use DB;
use App\AreaTematica;
use App\Rules\UniqueEmail;
class AdministradorController extends Controller
{
......@@ -531,7 +531,7 @@ class AdministradorController extends Controller
$validated = $request->validate([
'name' => ['required', 'string', 'max:255'],
'tipo' => ['required'],
'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
'email' => ['required', 'string', 'email', 'max:255', new UniqueEmail($request->email)],
'instituicao' => ['required_if:instituicaoSelect,Outra', 'max:255'],
'instituicaoSelect' => ['required_without:instituicao'],
'senha' => ['required', 'min:8'],
......@@ -543,20 +543,20 @@ class AdministradorController extends Controller
$validated = $request->validate([
'name' => ['required', 'string', 'max:255'],
'tipo' => ['required'],
'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
'email' => ['required', 'string', 'email', 'max:255', new UniqueEmail($request->email)],
'instituicao' => ['required_if:instituicaoSelect,Outra', 'max:255'],
'instituicaoSelect' => ['required_without:instituicao'],
'celular' => ['required', 'string', 'telefone'],
'senha' => ['required', 'min:8'],
'confirmar_senha' => ['required', 'min:8'],
'cpf' => ['required', 'cpf', 'unique:users'],
'cpf' => ['required', 'cpf', new UniqueEmail($request->email)],
]);
} else {
$validated = $request->validate([
'name' => ['required', 'string', 'max:255'],
'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
'email' => ['required', 'string', 'email', 'max:255', new UniqueEmail($request->email)],
'tipo' => ['required'],
'cpf' => ['required', 'cpf', 'unique:users'],
'cpf' => ['required', 'cpf', new UniqueEmail($request->email)],
'celular' => ['required', 'string', 'telefone'],
'senha' => ['required', 'min:8'],
'confirmar_senha' => ['required', 'min:8'],
......@@ -1042,7 +1042,7 @@ class AdministradorController extends Controller
$nomeAvaliador = $request->nomeAvaliador;
$emailAvaliador = $request->emailAvaliador;
$area = Area::where('id', $request->area_id)->first();
$user = User::where('email', $emailAvaliador)->first();
$user = User::where('email', 'ilike', $emailAvaliador)->first();
$areaTematica = AreaTematica::find($request->areasTemeticas);
if ($request->instituicao == 'ufape') {
......@@ -1162,7 +1162,7 @@ class AdministradorController extends Controller
$nomeAvaliador = $request->nomeAvaliador;
$emailAvaliador = $request->emailAvaliador;
$area = Area::where('id', $request->area_id)->first();
$user = User::where('email', $emailAvaliador)->first();
$user = User::where('email', 'ilike', $emailAvaliador)->first();
$areaTematica = AreaTematica::find($request->areasTemeticas);
if ($request->instituicao == 'ufape') {
......
......@@ -15,6 +15,7 @@ use App\Proponente;
use App\Endereco;
use App\Rules\UrlValidacao;
use App\Curso;
use App\Rules\UniqueEmail;
class RegisterController extends Controller
{
......@@ -60,7 +61,7 @@ class RegisterController extends Controller
{
return Validator::make($data, [
'name' => ['required', 'string', 'max:255'],
'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
'email' => ['required', 'string', 'email', 'max:255', new UniqueEmail($data['email'])],
'password' => ['required', 'string', 'min:8', 'confirmed'],
'cpf' => ['required', 'cpf', 'unique:users'],
'rg' => ['required', 'unique:participantes'],
......@@ -76,7 +77,7 @@ class RegisterController extends Controller
return Validator::make($data, [
'name' => ['required', 'string', 'max:255'],
'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
'email' => ['required', 'string', 'email', 'max:255', new UniqueEmail($data['email'])],
'password' => ['required', 'string', 'min:8', 'confirmed'],
'cpf' => ['required', 'cpf', 'unique:users'],
'rg' => ['required', 'unique:participantes'],
......
......@@ -49,7 +49,7 @@ class ComissaoController extends Controller
// 'especProfissional'=>'required|string',
]);
$user = User::where('email',$request->input('emailMembroComissao'))->first();
$user = User::where('email', 'ilike', $request->input('emailMembroComissao'))->first();
$evento = Evento::find($request->eventoId);
if($user == null){
$passwordTemporario = Str::random(8);
......
......@@ -50,7 +50,7 @@ class RevisorController extends Controller
'areaRevisor' => ['required', 'integer'],
]);
$usuario = User::where('email', $request->emailRevisor)->first();
$usuario = User::where('email', 'ilike', $request->emailRevisor)->first();
$evento = Evento::find($request->eventoId);
if($usuario == null){
......
......@@ -1071,9 +1071,9 @@ class TrabalhoController extends Controller
if($request->participante_id[$part] != null){
$participante = Participante::find($request->participante_id[$part]);
$user = User::where('email', $participante->user->email)->first();
$user = User::where('email', 'ilike', $participante->user->email)->first();
}else{
$user = User::where('email', $data['email'])->first();
$user = User::where('email', 'ilike', $data['email'])->first();
}
......@@ -1390,7 +1390,7 @@ class TrabalhoController extends Controller
$data['instituicao'] = $request->outrainstituicao[$part];
}
$user = User::where('email', $data['email'])->first();
$user = User::where('email', 'ilike', $data['email'])->first();
if ($user == null) {
$data['usuarioTemp'] = true;
......@@ -1551,7 +1551,7 @@ class TrabalhoController extends Controller
foreach ($request->participante_id as $key => $id) {
// Novo participante
if ($id == 0 || $id == null) {
$userParticipante = User::where('email', $request->emailParticipante[$key])->first();
$userParticipante = User::where('email', 'ilike', $request->emailParticipante[$key])->first();
$participante = new Participante();
......@@ -1626,7 +1626,7 @@ class TrabalhoController extends Controller
}
if ($request->nomePlanoTrabalho[$key] != null) {
$usuario = User::where('email', $request->emailParticipante[$key])->first();
$usuario = User::where('email', 'ilike', $request->emailParticipante[$key])->first();
$participante = Participante::where([['user_id', '=', $usuario->id], ['trabalho_id', '=', $projeto->id]])->first();
$path = 'trabalhos/' . $edital->id . '/' . $projeto->id . '/';
......@@ -1721,7 +1721,7 @@ class TrabalhoController extends Controller
}
if ($request->emailParticipante != null) {
foreach ($request->emailParticipante as $key => $email) {
$userParticipante = User::where('email', $email)->first();
$userParticipante = User::where('email', 'ilike', $email)->first();
$participante = new Participante();
......@@ -1768,7 +1768,7 @@ class TrabalhoController extends Controller
}
$participante->save();
$usuario = User::where('email', $email)->first();
$usuario = User::where('email', 'ilike', $email)->first();
$participante = Participante::where([['user_id', '=', $usuario->id], ['trabalho_id', '=', $projeto->id]])->first();
$path = 'trabalhos/' . $edital->id . '/' . $projeto->id . '/';
......@@ -1990,7 +1990,7 @@ class TrabalhoController extends Controller
$participanteSubstituido->data_saida = $request->data_entrada;
\App\Validator\CpfValidator::validate($request->all());
$user = User::where('email', $data['email'])->first();
$user = User::where('email', 'ilike', $data['email'])->first();
if (!$user) {
$data['usuarioTemp'] = true;
$user = User::create($data);
......
......@@ -3,7 +3,6 @@
namespace App\Providers;
use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider;
use Illuminate\Support\Facades\Gate;
class AuthServiceProvider extends ServiceProvider
{
......@@ -26,6 +25,8 @@ class AuthServiceProvider extends ServiceProvider
{
$this->registerPolicies();
//
$this->app->auth->provider('eloquent.custom', function ($app, array $config) {
return new UserProvider($app['hash'], $config['model']);
});
}
}
<?php
namespace App\Providers;
use Illuminate\Support\Str;
use Illuminate\Auth\EloquentUserProvider;
use Illuminate\Contracts\Auth\UserProvider as UserProviderContract;
use Illuminate\Contracts\Support\Arrayable;
class UserProvider extends EloquentUserProvider implements UserProviderContract
{
public function retrieveByCredentials(array $credentials)
{
if (empty($credentials) ||
(count($credentials) === 1 &&
Str::contains($this->firstCredentialKey($credentials), 'password'))) {
return;
}
$query = $this->newModelQuery();
foreach ($credentials as $key => $value) {
if (Str::contains($key, 'password')) {
continue;
}
if (Str::contains($key, 'email')) {
$query->where($key, 'ilike', $value);
continue;
}
if (is_array($value) || $value instanceof Arrayable) {
$query->whereIn($key, $value);
} else {
$query->where($key, $value);
}
}
return $query->first();
}
}
\ No newline at end of file
<?php
namespace App\Rules;
use Illuminate\Contracts\Validation\Rule;
use Illuminate\Support\Facades\DB;
class UniqueEmail implements Rule
{
/**
* Create a new rule instance.
*
* @return void
*/
public function __construct()
{
//
}
/**
* Determine if the validation rule passes.
*
* @param string $attribute
* @param mixed $value
* @return bool
*/
public function passes($attribute, $value)
{
return empty(DB::table("users")->where("email", 'ilike', $value)->first());
}
/**
* Get the validation error message.
*
* @return string
*/
public function message()
{
return 'Email já está cadastrado';
}
}
......@@ -6,7 +6,6 @@ use App\Notifications\recuperacaoSenha;
use Illuminate\Notifications\Notifiable;
use App\Notifications\VerifyNotification;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Contracts\Auth\CanResetPassword;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable implements MustVerifyEmail
......@@ -44,6 +43,16 @@ class User extends Authenticatable implements MustVerifyEmail
'email_verified_at' => 'datetime',
];
public function getEmailAttribute($value)
{
return strtolower($value);
}
public function setEmailAttribute($value)
{
$this->attributes['email'] = strtolower($value);
}
public function trabalho(){
return $this->hasMany('App\Trabalho', 'autorId');
}
......
......@@ -67,7 +67,7 @@ return [
'providers' => [
'users' => [
'driver' => 'eloquent',
'driver' => 'eloquent.custom',
'model' => App\User::class,
],
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment