Commit b7795ae9 authored by alinetenorio's avatar alinetenorio
Browse files

validação link do Lattes

parent e58d128b
...@@ -12,6 +12,7 @@ use Illuminate\Validation\Rule; ...@@ -12,6 +12,7 @@ use Illuminate\Validation\Rule;
use App\User; use App\User;
use App\Participante; use App\Participante;
use App\Proponente; use App\Proponente;
use App\Rules\UrlValidacao;
class RegisterController extends Controller class RegisterController extends Controller
{ {
...@@ -54,31 +55,29 @@ class RegisterController extends Controller ...@@ -54,31 +55,29 @@ class RegisterController extends Controller
protected function validator(array $data) protected function validator(array $data)
{ {
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', 'unique:users'],
'password' => ['required', 'string', 'min:8', 'confirmed'], 'password' => ['required', 'string', 'min:8', 'confirmed'],
'cpf' => ['required', 'cpf'], 'cpf' => ['required', 'cpf'],
'celular' => ['required','string'], 'celular' => ['required', 'string'],
'instituicao' => ['required_if:instituicaoSelect,Outra','max:255'], 'instituicao' => ['required_if:instituicaoSelect,Outra', 'max:255'],
'instituicaoSelect' => ['required_without:instituicao'], 'instituicaoSelect' => ['required_without:instituicao'],
'cargo' => ['required'], 'cargo' => ['required'],
'vinculo' => ['required'], 'vinculo' => ['required'],
'outro' => ['required_if:vinculo,Outro'], 'outro' => ['required_if:vinculo,Outro'],
'titulacaoMaxima' => ['required_with:anoTitulacao,areaFormacao,bolsistaProdutividade,linkLattes'], 'titulacaoMaxima' => ['required_with:anoTitulacao,areaFormacao,bolsistaProdutividade'],
'titulacaoMaxima' => Rule::requiredIf( (isset($data['cargo']) && $data['cargo'] !== 'Estudante') || (isset($data['cargo']) && $data['cargo'] === 'Estudante' && isset($data['vinculo']) && $data['vinculo']=== 'Pós-doutorando')), 'titulacaoMaxima' => Rule::requiredIf((isset($data['cargo']) && $data['cargo'] !== 'Estudante') || (isset($data['cargo']) && $data['cargo'] === 'Estudante' && isset($data['vinculo']) && $data['vinculo'] === 'Pós-doutorando')),
'anoTitulacao'=> ['required_with:titulacaoMaxima,areaFormacao,bolsistaProdutividade,linkLattes'], 'anoTitulacao' => ['required_with:titulacaoMaxima,areaFormacao,bolsistaProdutividade,linkLattes'],
'anoTitulacao' => Rule::requiredIf( (isset($data['cargo']) && $data['cargo'] !== 'Estudante') || (isset($data['cargo']) && $data['cargo'] === 'Estudante' && isset($data['vinculo']) && $data['vinculo'] === 'Pós-doutorando')), 'anoTitulacao' => Rule::requiredIf((isset($data['cargo']) && $data['cargo'] !== 'Estudante') || (isset($data['cargo']) && $data['cargo'] === 'Estudante' && isset($data['vinculo']) && $data['vinculo'] === 'Pós-doutorando')),
'areaFormacao'=> ['required_with:titulacaoMaxima,anoTitulacao,bolsistaProdutividade,linkLattes'], 'areaFormacao' => ['required_with:titulacaoMaxima,anoTitulacao,bolsistaProdutividade,linkLattes'],
'areaFormacao' => Rule::requiredIf( (isset($data['cargo']) && $data['cargo'] !== 'Estudante') || (isset($data['cargo']) && $data['cargo'] === 'Estudante' && isset($data['vinculo']) && $data['vinculo'] === 'Pós-doutorando')), 'areaFormacao' => Rule::requiredIf((isset($data['cargo']) && $data['cargo'] !== 'Estudante') || (isset($data['cargo']) && $data['cargo'] === 'Estudante' && isset($data['vinculo']) && $data['vinculo'] === 'Pós-doutorando')),
'bolsistaProdutividade'=> ['required_with:titulacaoMaxima,anoTitulacao,areaFormacao,linkLattes'], 'bolsistaProdutividade' => ['required_with:titulacaoMaxima,anoTitulacao,areaFormacao,linkLattes'],
'bolsistaProdutividade' => Rule::requiredIf( (isset($data['cargo']) && $data['cargo'] !== 'Estudante') || (isset($data['cargo']) && $data['cargo'] === 'Estudante' && isset($data['vinculo']) && $data['vinculo'] === 'Pós-doutorando')), 'bolsistaProdutividade' => Rule::requiredIf((isset($data['cargo']) && $data['cargo'] !== 'Estudante') || (isset($data['cargo']) && $data['cargo'] === 'Estudante' && isset($data['vinculo']) && $data['vinculo'] === 'Pós-doutorando')),
'nivel' => ['required_if:bolsistaProdutividade,sim'], 'nivel' => ['required_if:bolsistaProdutividade,sim'],
'linkLattes'=> ['required_with:titulacaoMaxima,anoTitulacao,areaFormacao,bolsistaProdutividade'], 'linkLattes' => ['required_with:titulacaoMaxima,anoTitulacao,areaFormacao,bolsistaProdutividade'],
'linkLattes' => Rule::requiredIf( (isset($data['cargo']) && $data['cargo'] !== 'Estudante') || (isset($data['cargo']) && $data['cargo'] === 'Estudante' && isset($data['vinculo']) && $data['vinculo'] === 'Pós-doutorando')), 'linkLattes' => [(isset($data['cargo']) && $data['cargo'] !== 'Estudante') || (isset($data['cargo']) && $data['cargo'] === 'Estudante' && isset($data['vinculo']) && $data['vinculo'] === 'Pós-doutorando') ? 'required':'','link_lattes'],
]); ]);
} }
...@@ -90,58 +89,59 @@ class RegisterController extends Controller ...@@ -90,58 +89,59 @@ class RegisterController extends Controller
*/ */
protected function create(array $data) protected function create(array $data)
{ {
//dd($data); //dd($data);
$user = new User(); $user = new User();
$user->name = $data['name']; $user->name = $data['name'];
$user->email = $data['email']; $user->email = $data['email'];
$user->password = bcrypt($data['password']); $user->password = bcrypt($data['password']);
$user->cpf = $data['cpf']; $user->cpf = $data['cpf'];
$user->celular = $data['celular']; $user->celular = $data['celular'];
if($data['instituicao'] != null){ if ($data['instituicao'] != null) {
$user->instituicao = $data['instituicao']; $user->instituicao = $data['instituicao'];
}else if (isset($data['instituicaoSelect']) && $data['instituicaoSelect'] != "Outra"){ } else if (isset($data['instituicaoSelect']) && $data['instituicaoSelect'] != "Outra") {
$user->instituicao = $data['instituicaoSelect']; $user->instituicao = $data['instituicaoSelect'];
} }
if($data['cargo'] === "Estudante" && $data['vinculo'] !== "Pós-doutorando"){ if ($data['cargo'] === "Estudante" && $data['vinculo'] !== "Pós-doutorando") {
$user->tipo = 'participante'; $user->tipo = 'participante';
$user->save(); $user->save();
$participante = new Participante(); $participante = new Participante();
$user->participantes()->save($participante); $user->participantes()->save($participante);
}else{ } else {
$user->tipo = 'proponente'; $user->tipo = 'proponente';
$user->save(); $user->save();
$proponente = new Proponente(); $proponente = new Proponente();
if($data['SIAPE'] != null){ if ($data['SIAPE'] != null) {
$proponente->SIAPE = $data['SIAPE']; $proponente->SIAPE = $data['SIAPE'];
} }
$proponente->cargo = $data['cargo']; $proponente->cargo = $data['cargo'];
if($data['vinculo'] != 'Outro'){ if ($data['vinculo'] != 'Outro') {
$proponente->vinculo = $data['vinculo']; $proponente->vinculo = $data['vinculo'];
}else{ } else {
$proponente->vinculo = $data['outro']; $proponente->vinculo = $data['outro'];
} }
$proponente->titulacaoMaxima = $data['titulacaoMaxima']; $proponente->titulacaoMaxima = $data['titulacaoMaxima'];
$proponente->anoTitulacao = $data['anoTitulacao']; $proponente->anoTitulacao = $data['anoTitulacao'];
$proponente->areaFormacao = $data['areaFormacao']; $proponente->areaFormacao = $data['areaFormacao'];
$proponente->bolsistaProdutividade = $data['bolsistaProdutividade']; $proponente->bolsistaProdutividade = $data['bolsistaProdutividade'];
if($data['bolsistaProdutividade'] == 'sim'){ if ($data['bolsistaProdutividade'] == 'sim') {
$proponente->nivel = $data['nivel']; $proponente->nivel = $data['nivel'];
} }
$proponente->linkLattes = $data['linkLattes']; $proponente->linkLattes = $data['linkLattes'];
$user->proponentes()->save($proponente); $user->proponentes()->save($proponente);
} }
return $user; return $user;
} }
public function showRegistrationForm(){ public function showRegistrationForm()
{
return view('auth.register'); return view('auth.register');
} }
} }
...@@ -24,6 +24,7 @@ class AppServiceProvider extends ServiceProvider ...@@ -24,6 +24,7 @@ class AppServiceProvider extends ServiceProvider
*/ */
public function boot() public function boot()
{ {
Validator::extend('cpf', '\App\Utils\CpfValidation@validate'); Validator::extend('cpf', '\App\Utils\CpfValidation@validate');
Validator::extend('link_lattes', '\App\Utils\LattesValidation@validate', 'Link inválido');
} }
} }
<?php namespace App\Utils;
class LattesValidation
{
public function validate($attribute, $value, $parameters, $validator)
{
return $this->isValidUrl($value);
}
function isValidUrl($url)
{
// first do some quick sanity checks:
if (!$url || !is_string($url)) {
return false;
}
$url = filter_var($url, FILTER_SANITIZE_URL);
// Validate url
if (!filter_var($url, FILTER_VALIDATE_URL)) {
return false;
}
if(parse_url($url)['host'] != 'buscatextual.cnpq.br' && parse_url($url)['host'] != 'lattes.cnpq.br'){
return false;
}
if($this->getHttpResponseCode_using_getheaders($url) != 200){
return false;
}
return true;
}
function getHttpResponseCode_using_getheaders($url, $followredirects = true)
{
if (!$url || !is_string($url)) {
return false;
}
$headers = @get_headers($url);
if ($headers && is_array($headers)) {
if ($followredirects) {
$headers = array_reverse($headers);
}
foreach ($headers as $hline) {
if (preg_match('/^HTTP\/\S+\s+([1-9][0-9][0-9])\s+.*/', $hline, $matches)) {
$code = $matches[1];
return $code;
}
}
return false;
}
return false;
}
}
\ No newline at end of file
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