diff --git a/app/Http/Controllers/AdministradorController.php b/app/Http/Controllers/AdministradorController.php index ce460f82332db90b63e095184caf0606fbe601e6..d157431c7318edcdaead07fcc09ed80cc7898cf3 100755 --- a/app/Http/Controllers/AdministradorController.php +++ b/app/Http/Controllers/AdministradorController.php @@ -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') { diff --git a/app/Http/Controllers/Auth/RegisterController.php b/app/Http/Controllers/Auth/RegisterController.php index 599a57bcee03f4c122d46ac057926df9847efdca..26a751eec88972f900c69b109d7677805448710e 100755 --- a/app/Http/Controllers/Auth/RegisterController.php +++ b/app/Http/Controllers/Auth/RegisterController.php @@ -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'], diff --git a/app/Http/Controllers/ComissaoController.php b/app/Http/Controllers/ComissaoController.php index 4247456340e98f16e03264be37c4b44fa0882715..88be4132e8a3aa300891eb1daae5c1e9b5cc02ea 100755 --- a/app/Http/Controllers/ComissaoController.php +++ b/app/Http/Controllers/ComissaoController.php @@ -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); diff --git a/app/Http/Controllers/RevisorController.php b/app/Http/Controllers/RevisorController.php index 35d0b22ea216e60b13e59eba430fe4be0e24e469..e7a19b83fcc128d850247d9ed5877944195a7619 100755 --- a/app/Http/Controllers/RevisorController.php +++ b/app/Http/Controllers/RevisorController.php @@ -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){ diff --git a/app/Http/Controllers/TrabalhoController.php b/app/Http/Controllers/TrabalhoController.php index b10f53846faf789fe121061e46e41fb1cf55a92f..15bbf80f33b568443ced8b2b6797584fc488881b 100755 --- a/app/Http/Controllers/TrabalhoController.php +++ b/app/Http/Controllers/TrabalhoController.php @@ -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); diff --git a/app/Providers/AuthServiceProvider.php b/app/Providers/AuthServiceProvider.php index 6902ac06b84e136ca1099c814608c83fce751d38..f36ad9ce19376c00bb97663c5307e7c60fcbac9e 100755 --- a/app/Providers/AuthServiceProvider.php +++ b/app/Providers/AuthServiceProvider.php @@ -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']); + }); } } diff --git a/app/Providers/UserProvider.php b/app/Providers/UserProvider.php new file mode 100644 index 0000000000000000000000000000000000000000..abdccce9f2f6027e975eecea8faa95dc1c778388 --- /dev/null +++ b/app/Providers/UserProvider.php @@ -0,0 +1,41 @@ +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 diff --git a/app/Rules/UniqueEmail.php b/app/Rules/UniqueEmail.php new file mode 100644 index 0000000000000000000000000000000000000000..89b75aa19c3f4c34aa85cf70aadcc1a39394090e --- /dev/null +++ b/app/Rules/UniqueEmail.php @@ -0,0 +1,41 @@ +where("email", 'ilike', $value)->first()); + } + + /** + * Get the validation error message. + * + * @return string + */ + public function message() + { + return 'Email já está cadastrado'; + } +} diff --git a/app/User.php b/app/User.php index 84b76ed1022890192dcf9e463835c8eae0a89048..428ad4cf16040cce1e0e2cafbb1b0306af502df2 100755 --- a/app/User.php +++ b/app/User.php @@ -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'); } diff --git a/config/auth.php b/config/auth.php index aaf982bcdcee30074e582002f9832c2e5621f639..cdf432c62676897bee5b22def7229cd5ccb4ef59 100755 --- a/config/auth.php +++ b/config/auth.php @@ -67,7 +67,7 @@ return [ 'providers' => [ 'users' => [ - 'driver' => 'eloquent', + 'driver' => 'eloquent.custom', 'model' => App\User::class, ],