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
No related merge requests found
Showing with 117 additions and 24 deletions
+117 -24
...@@ -38,7 +38,7 @@ use Illuminate\Validation\Rule; ...@@ -38,7 +38,7 @@ use Illuminate\Validation\Rule;
use PDF; use PDF;
use DB; use DB;
use App\AreaTematica; use App\AreaTematica;
use App\Rules\UniqueEmail;
class AdministradorController extends Controller class AdministradorController extends Controller
{ {
...@@ -531,7 +531,7 @@ class AdministradorController extends Controller ...@@ -531,7 +531,7 @@ class AdministradorController extends Controller
$validated = $request->validate([ $validated = $request->validate([
'name' => ['required', 'string', 'max:255'], 'name' => ['required', 'string', 'max:255'],
'tipo' => ['required'], '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'], 'instituicao' => ['required_if:instituicaoSelect,Outra', 'max:255'],
'instituicaoSelect' => ['required_without:instituicao'], 'instituicaoSelect' => ['required_without:instituicao'],
'senha' => ['required', 'min:8'], 'senha' => ['required', 'min:8'],
...@@ -543,20 +543,20 @@ class AdministradorController extends Controller ...@@ -543,20 +543,20 @@ class AdministradorController extends Controller
$validated = $request->validate([ $validated = $request->validate([
'name' => ['required', 'string', 'max:255'], 'name' => ['required', 'string', 'max:255'],
'tipo' => ['required'], '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'], 'instituicao' => ['required_if:instituicaoSelect,Outra', 'max:255'],
'instituicaoSelect' => ['required_without:instituicao'], 'instituicaoSelect' => ['required_without:instituicao'],
'celular' => ['required', 'string', 'telefone'], 'celular' => ['required', 'string', 'telefone'],
'senha' => ['required', 'min:8'], 'senha' => ['required', 'min:8'],
'confirmar_senha' => ['required', 'min:8'], 'confirmar_senha' => ['required', 'min:8'],
'cpf' => ['required', 'cpf', 'unique:users'], 'cpf' => ['required', 'cpf', new UniqueEmail($request->email)],
]); ]);
} else { } else {
$validated = $request->validate([ $validated = $request->validate([
'name' => ['required', 'string', 'max:255'], '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'], 'tipo' => ['required'],
'cpf' => ['required', 'cpf', 'unique:users'], 'cpf' => ['required', 'cpf', new UniqueEmail($request->email)],
'celular' => ['required', 'string', 'telefone'], 'celular' => ['required', 'string', 'telefone'],
'senha' => ['required', 'min:8'], 'senha' => ['required', 'min:8'],
'confirmar_senha' => ['required', 'min:8'], 'confirmar_senha' => ['required', 'min:8'],
...@@ -1042,7 +1042,7 @@ class AdministradorController extends Controller ...@@ -1042,7 +1042,7 @@ class AdministradorController extends Controller
$nomeAvaliador = $request->nomeAvaliador; $nomeAvaliador = $request->nomeAvaliador;
$emailAvaliador = $request->emailAvaliador; $emailAvaliador = $request->emailAvaliador;
$area = Area::where('id', $request->area_id)->first(); $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); $areaTematica = AreaTematica::find($request->areasTemeticas);
if ($request->instituicao == 'ufape') { if ($request->instituicao == 'ufape') {
...@@ -1162,7 +1162,7 @@ class AdministradorController extends Controller ...@@ -1162,7 +1162,7 @@ class AdministradorController extends Controller
$nomeAvaliador = $request->nomeAvaliador; $nomeAvaliador = $request->nomeAvaliador;
$emailAvaliador = $request->emailAvaliador; $emailAvaliador = $request->emailAvaliador;
$area = Area::where('id', $request->area_id)->first(); $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); $areaTematica = AreaTematica::find($request->areasTemeticas);
if ($request->instituicao == 'ufape') { if ($request->instituicao == 'ufape') {
......
...@@ -15,6 +15,7 @@ use App\Proponente; ...@@ -15,6 +15,7 @@ use App\Proponente;
use App\Endereco; use App\Endereco;
use App\Rules\UrlValidacao; use App\Rules\UrlValidacao;
use App\Curso; use App\Curso;
use App\Rules\UniqueEmail;
class RegisterController extends Controller class RegisterController extends Controller
{ {
...@@ -60,7 +61,7 @@ class RegisterController extends Controller ...@@ -60,7 +61,7 @@ class RegisterController extends Controller
{ {
return Validator::make($data, [ return Validator::make($data, [
'name' => ['required', 'string', 'max:255'], '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'], 'password' => ['required', 'string', 'min:8', 'confirmed'],
'cpf' => ['required', 'cpf', 'unique:users'], 'cpf' => ['required', 'cpf', 'unique:users'],
'rg' => ['required', 'unique:participantes'], 'rg' => ['required', 'unique:participantes'],
...@@ -76,7 +77,7 @@ class RegisterController extends Controller ...@@ -76,7 +77,7 @@ class RegisterController extends Controller
return Validator::make($data, [ return Validator::make($data, [
'name' => ['required', 'string', 'max:255'], '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'], 'password' => ['required', 'string', 'min:8', 'confirmed'],
'cpf' => ['required', 'cpf', 'unique:users'], 'cpf' => ['required', 'cpf', 'unique:users'],
'rg' => ['required', 'unique:participantes'], 'rg' => ['required', 'unique:participantes'],
......
...@@ -49,7 +49,7 @@ class ComissaoController extends Controller ...@@ -49,7 +49,7 @@ class ComissaoController extends Controller
// 'especProfissional'=>'required|string', // '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); $evento = Evento::find($request->eventoId);
if($user == null){ if($user == null){
$passwordTemporario = Str::random(8); $passwordTemporario = Str::random(8);
......
...@@ -50,7 +50,7 @@ class RevisorController extends Controller ...@@ -50,7 +50,7 @@ class RevisorController extends Controller
'areaRevisor' => ['required', 'integer'], 'areaRevisor' => ['required', 'integer'],
]); ]);
$usuario = User::where('email', $request->emailRevisor)->first(); $usuario = User::where('email', 'ilike', $request->emailRevisor)->first();
$evento = Evento::find($request->eventoId); $evento = Evento::find($request->eventoId);
if($usuario == null){ if($usuario == null){
......
...@@ -1071,9 +1071,9 @@ class TrabalhoController extends Controller ...@@ -1071,9 +1071,9 @@ class TrabalhoController extends Controller
if($request->participante_id[$part] != null){ if($request->participante_id[$part] != null){
$participante = Participante::find($request->participante_id[$part]); $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{ }else{
$user = User::where('email', $data['email'])->first(); $user = User::where('email', 'ilike', $data['email'])->first();
} }
...@@ -1390,7 +1390,7 @@ class TrabalhoController extends Controller ...@@ -1390,7 +1390,7 @@ class TrabalhoController extends Controller
$data['instituicao'] = $request->outrainstituicao[$part]; $data['instituicao'] = $request->outrainstituicao[$part];
} }
$user = User::where('email', $data['email'])->first(); $user = User::where('email', 'ilike', $data['email'])->first();
if ($user == null) { if ($user == null) {
$data['usuarioTemp'] = true; $data['usuarioTemp'] = true;
...@@ -1551,7 +1551,7 @@ class TrabalhoController extends Controller ...@@ -1551,7 +1551,7 @@ class TrabalhoController extends Controller
foreach ($request->participante_id as $key => $id) { foreach ($request->participante_id as $key => $id) {
// Novo participante // Novo participante
if ($id == 0 || $id == null) { 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(); $participante = new Participante();
...@@ -1626,7 +1626,7 @@ class TrabalhoController extends Controller ...@@ -1626,7 +1626,7 @@ class TrabalhoController extends Controller
} }
if ($request->nomePlanoTrabalho[$key] != null) { 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(); $participante = Participante::where([['user_id', '=', $usuario->id], ['trabalho_id', '=', $projeto->id]])->first();
$path = 'trabalhos/' . $edital->id . '/' . $projeto->id . '/'; $path = 'trabalhos/' . $edital->id . '/' . $projeto->id . '/';
...@@ -1721,7 +1721,7 @@ class TrabalhoController extends Controller ...@@ -1721,7 +1721,7 @@ class TrabalhoController extends Controller
} }
if ($request->emailParticipante != null) { if ($request->emailParticipante != null) {
foreach ($request->emailParticipante as $key => $email) { foreach ($request->emailParticipante as $key => $email) {
$userParticipante = User::where('email', $email)->first(); $userParticipante = User::where('email', 'ilike', $email)->first();
$participante = new Participante(); $participante = new Participante();
...@@ -1768,7 +1768,7 @@ class TrabalhoController extends Controller ...@@ -1768,7 +1768,7 @@ class TrabalhoController extends Controller
} }
$participante->save(); $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(); $participante = Participante::where([['user_id', '=', $usuario->id], ['trabalho_id', '=', $projeto->id]])->first();
$path = 'trabalhos/' . $edital->id . '/' . $projeto->id . '/'; $path = 'trabalhos/' . $edital->id . '/' . $projeto->id . '/';
...@@ -1990,7 +1990,7 @@ class TrabalhoController extends Controller ...@@ -1990,7 +1990,7 @@ class TrabalhoController extends Controller
$participanteSubstituido->data_saida = $request->data_entrada; $participanteSubstituido->data_saida = $request->data_entrada;
\App\Validator\CpfValidator::validate($request->all()); \App\Validator\CpfValidator::validate($request->all());
$user = User::where('email', $data['email'])->first(); $user = User::where('email', 'ilike', $data['email'])->first();
if (!$user) { if (!$user) {
$data['usuarioTemp'] = true; $data['usuarioTemp'] = true;
$user = User::create($data); $user = User::create($data);
......
...@@ -3,7 +3,6 @@ ...@@ -3,7 +3,6 @@
namespace App\Providers; namespace App\Providers;
use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider; use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider;
use Illuminate\Support\Facades\Gate;
class AuthServiceProvider extends ServiceProvider class AuthServiceProvider extends ServiceProvider
{ {
...@@ -26,6 +25,8 @@ class AuthServiceProvider extends ServiceProvider ...@@ -26,6 +25,8 @@ class AuthServiceProvider extends ServiceProvider
{ {
$this->registerPolicies(); $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; ...@@ -6,7 +6,6 @@ use App\Notifications\recuperacaoSenha;
use Illuminate\Notifications\Notifiable; use Illuminate\Notifications\Notifiable;
use App\Notifications\VerifyNotification; use App\Notifications\VerifyNotification;
use Illuminate\Contracts\Auth\MustVerifyEmail; use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Contracts\Auth\CanResetPassword;
use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable implements MustVerifyEmail class User extends Authenticatable implements MustVerifyEmail
...@@ -44,6 +43,16 @@ class User extends Authenticatable implements MustVerifyEmail ...@@ -44,6 +43,16 @@ class User extends Authenticatable implements MustVerifyEmail
'email_verified_at' => 'datetime', 'email_verified_at' => 'datetime',
]; ];
public function getEmailAttribute($value)
{
return strtolower($value);
}
public function setEmailAttribute($value)
{
$this->attributes['email'] = strtolower($value);
}
public function trabalho(){ public function trabalho(){
return $this->hasMany('App\Trabalho', 'autorId'); return $this->hasMany('App\Trabalho', 'autorId');
} }
......
...@@ -67,7 +67,7 @@ return [ ...@@ -67,7 +67,7 @@ return [
'providers' => [ 'providers' => [
'users' => [ 'users' => [
'driver' => 'eloquent', 'driver' => 'eloquent.custom',
'model' => App\User::class, '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