Commit 0e5ea578 authored by Abraão Barbosa's avatar Abraão Barbosa
Browse files

Adicionado redefinicaão de senha

parent d887e59b
...@@ -5,21 +5,24 @@ namespace App\Http\Controllers; ...@@ -5,21 +5,24 @@ namespace App\Http\Controllers;
use App\Models\User; use App\Models\User;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
class UserController extends Controller class UserController extends Controller
{ {
const MENU_UPDATE_PERFIL = 0; const MENU_UPDATE_PERFIL = 0;
public function editPerfil() { public function editPerfil()
{
return view('user.update_perfil', ['index_menu' => self::MENU_UPDATE_PERFIL]); return view('user.update_perfil', ['index_menu' => self::MENU_UPDATE_PERFIL]);
} }
public function updatePerfil(Request $request) { public function updatePerfil(Request $request)
{
$validator = User::validator($request->all()); $validator = User::validator($request->all());
if($validator->fails()) { if ($validator->fails()) {
return redirect()->back()->withErrors($validator->errors()); return redirect()->back()->withErrors($validator->errors());
} }
...@@ -31,19 +34,25 @@ class UserController extends Controller ...@@ -31,19 +34,25 @@ class UserController extends Controller
} }
public function updatePassword(Request $request) { public function updatePassword(Request $request)
{
$validator = User::validator($request->all(), true); $validator = User::validator($request->all(), true);
// if($validator->fails()) { if ($validator->fails()) {
// return redirect()->back()->withErrors($validator->errors()); return redirect()->back()->withErrors($validator->errors());
// } }
// $user = User::find(Auth::user()->id); $user = User::find(Auth::user()->id);
// $user->fill($request->all()); $newData = $request->all();
// $user->save();
// return redirect()->route('edit_perfil')->with('success', 'Salvo com sucesso!'); if($request->all()['password'] == $request->all()['password_confirmation']){
$newData['password'] = Hash::make($request->password);
}
$user->fill($newData);
$user->save();
return redirect()->route('edit_perfil')->with('success', 'Salvo com sucesso!');
} }
} }
\ No newline at end of file
This diff is collapsed.
version: '3.8'
services:
db:
image: mysql:8.0
cap_add:
- SYS_NICE
restart: always
environment:
- MYSQL_ROOT_PASSWORD=root
- MYSQL_DATABASE=test_db
ports:
- '3306:3306'
volumes:
- db:/var/lib/mysql
- ./db/init.sql:/docker-entrypoint-initdb.d/init.sql
phpmyadmin:
image: phpmyadmin/phpmyadmin:latest
restart: always
environment:
PMA_HOST: db
PMA_USER: root
PMA_PASSWORD: root
ports:
- "8080:80"
volumes:
db:
driver: local
\ No newline at end of file
<x-guest-layout> @extends('auth.main')
<x-auth-card>
<x-slot name="logo">
<a href="/">
<x-application-logo class="w-20 h-20 fill-current text-gray-500" />
</a>
</x-slot>
<div class="mb-4 text-sm text-gray-600"> @section('body')
{{ __('Forgot your password? No problem. Just let us know your email address and we will email you a password reset link that will allow you to choose a new one.') }} <!-- Container principal -->
<div class="ftco-section">
<div class="d-flex justify-content-center align-items-center" style="height: 50vh;">
<div class="col-md-12 col-lg-7">
<div class="login-wrap">
<!-- Validation Errors -->
<x-auth-validation-errors class="alert alert-danger mb-2" :errors="$errors" />
<div class="signin-form d-md-flex">
@csrf
<!-- Informações -->
<div class="half p-4 py-md-5 bg-primary">
<p class="w-100 text-center">&mdash; Esqueceu sua senha? &mdash;</p>
<p class="w-100 text-center">Sem problemas. Basta nos informar seu endereço
de e-mail e enviaremos um e-mail com um link de redefinição de senha que permitirá que você
escolha um novo.</p>
</div>
<!-- Login -->
<div class="half p-4 py-md-5">
<div class="w-100">
<h4 class="mb-4">Redefinir senha</h4>
</div> </div>
<!-- Session Status --> <!-- Session Status -->
<x-auth-session-status class="mb-4" :status="session('status')" /> <x-auth-session-status class="mb-4" :status="session('status')" />
<!-- Validation Errors --> <!-- Validation Errors -->
<x-auth-validation-errors class="mb-4" :errors="$errors" /> <x-auth-validation-errors class="mb-4" :errors="$errors" />
<form method="POST" action="{{ route('password.email') }}"> <form method="POST" action="{{ route('password.email') }}">
@csrf @csrf
<!-- Email Address --> <!-- Email Address -->
<div> <div class="form-group mt-3">
<x-label for="email" :value="__('Email')" /> <label class="label" for="name">Endereço de email</label>
<input type="email" name="email" class="form-control" placeholder="ex: nome@upe.br" :value="old('email')" required autofocus />
<x-input id="email" class="block mt-1 w-full" type="email" name="email" :value="old('email')" required autofocus />
</div> </div>
<!-- Email Address -->
<div class="flex items-center justify-end mt-4"> <div class="flex items-center justify-end mt-4">
<x-button> <button type="submit" class="form-control btn btn-secondary rounded submit px-3">
{{ __('Email Password Reset Link') }} Link de redefinição de senha de e-mail
</x-button> </button>
</div> </div>
</form> </form>
</x-auth-card> </div>
</x-guest-layout> </div>
</div>
</div>
</div>
</div>
@endsection
\ No newline at end of file
...@@ -60,6 +60,7 @@ ...@@ -60,6 +60,7 @@
<a href="#" style="color: rgb(22, 21, 21);"></a> <a href="#" style="color: rgb(22, 21, 21);"></a>
</div> </div>
</div> </div>
<a href="{{ route('password.request') }}">Esqueci minha senha</a>
</div> </div>
</form> </form>
</div> </div>
......
<x-guest-layout> @extends('auth.main')
<x-auth-card>
<x-slot name="logo">
<a href="/">
<x-application-logo class="w-20 h-20 fill-current text-gray-500" />
</a>
</x-slot>
@section('body')
<!-- Container principal -->
<div class="ftco-section">
<div class="d-flex justify-content-center align-items-center" style="height: 50vh;">
<div class="login-wrap p-5" style="width: 500px;">
<!-- Validation Errors -->
<x-auth-validation-errors class="alert alert-danger mb-2" :errors="$errors" />
<div class="w-100">
<h4 class="mb-4">Redefinir senha</h4>
</div>
<!-- Session Status -->
<x-auth-session-status class="mb-4" :status="session('status')" />
<!-- Validation Errors --> <!-- Validation Errors -->
<x-auth-validation-errors class="mb-4" :errors="$errors" /> <x-auth-validation-errors class="mb-4" :errors="$errors" />
<form method="POST" action="{{ route('password.update') }}"> <form method="POST" action="{{ route('password.update') }}">
@csrf @csrf
<!-- Password Reset Token --> <!-- Password Reset Token -->
<input type="hidden" name="token" value="{{ $request->route('token') }}"> <input type="hidden" name="token" value="{{ $request->route('token') }}">
<!-- Email Address --> <!-- Email Address -->
<div> <div class="form-group mt-3">
<x-label for="email" :value="__('Email')" /> <x-label for="email" :value="__('Email')" />
<x-input id="email" class="block mt-1 w-full" type="email" name="email" :value="old('email', $request->email)" required autofocus /> <x-input id="email" class="form-control" type="email" name="email"
:value="old('email', $request->email)" required autofocus />
</div> </div>
<!-- Password --> <!-- Password -->
<div class="mt-4"> <div class="form-group mt-3">
<x-label for="password" :value="__('Password')" /> <x-label for="password" :value="__('Password')" />
<x-input id="password" class="block mt-1 w-full" type="password" name="password" required /> <x-input id="password" class="form-control" type="password" name="password" required />
</div> </div>
<!-- Confirm Password --> <!-- Confirm Password -->
<div class="mt-4"> <div class="form-group mt-3">
<x-label for="password_confirmation" :value="__('Confirm Password')" /> <x-label for="password_confirmation" :value="__('Confirm Password')" />
<x-input id="password_confirmation" class="block mt-1 w-full" <x-input id="password_confirmation" class="form-control" type="password"
type="password" name="password_confirmation" required/>
name="password_confirmation" required />
</div> </div>
<div class="flex items-center justify-end mt-4"> <div class="flex items-center justify-end mt-4">
<x-button> <button type="submit" class="form-control btn btn-secondary rounded submit px-3">
{{ __('Reset Password') }} Redefinir senha
</x-button> </button>
</div> </div>
</form> </form>
</x-auth-card> </div>
</x-guest-layout> </div>
</div>
</div>
</div>
@endsection
\ No newline at end of file
...@@ -35,7 +35,7 @@ ...@@ -35,7 +35,7 @@
<footer class="pt-3 my-3 text-center text-muted align-items-center border-top"> <footer class="pt-3 my-3 text-center text-muted align-items-center border-top">
Copyright &copy;2022. Universidade de Pernambuco - Todos os direitos reservados Copyright &copy;2022. Universidade de Pernambuco - Todos os direitos reservados
</footer> </footer>
@include('layouts.user-jquery.jquery_all_users')
@if(Auth::user()->isTypeAdmin()) @if(Auth::user()->isTypeAdmin())
@include('layouts.user-jquery.jquery_admin') @include('layouts.user-jquery.jquery_admin')
@endif @endif
......
...@@ -37,7 +37,7 @@ ...@@ -37,7 +37,7 @@
<footer class="pt-3 my-3 text-center text-muted align-items-center border-top"> <footer class="pt-3 my-3 text-center text-muted align-items-center border-top">
Copyright &copy;2022. Universidade de Pernambuco - Todos os direitos reservados Copyright &copy;2022. Universidade de Pernambuco - Todos os direitos reservados
</footer> </footer>
@include('layouts.user-jquery.jquery_all_users')
@if (Auth::user()->isTypeAdmin()) @if (Auth::user()->isTypeAdmin())
@include('layouts.user-jquery.jquery_admin') @include('layouts.user-jquery.jquery_admin')
@endif @endif
......
<script type="text/javascript"> <script type="text/javascript">
$(document).ready(() => {
$( document ).ready(() => {
$("#update-perfil-tab").hide() $("#update-perfil-tab").hide()
...@@ -19,10 +18,10 @@ $( document ).ready(() => { ...@@ -19,10 +18,10 @@ $( document ).ready(() => {
</tr> </tr>
`) `)
unidades.forEach( (unidade, index) => { unidades.forEach((unidade, index) => {
table_unidades.append(` table_unidades.append(`
<tr> <tr>
<td scope="row"> ${index+1} <td> <td scope="row"> ${index + 1} <td>
<td> ${unidade.name} <td> <td> ${unidade.name} <td>
<td> <td>
@include('components.buttons.btn-edit', ['btn_class' => 'btn btn-warning', 'route' => '']) @include('components.buttons.btn-edit', ['btn_class' => 'btn btn-warning', 'route' => ''])
...@@ -50,10 +49,10 @@ $( document ).ready(() => { ...@@ -50,10 +49,10 @@ $( document ).ready(() => {
</tr> </tr>
`) `)
campus.forEach( (campi, index) => { campus.forEach((campi, index) => {
table.append(` table.append(`
<tr> <tr>
<td scope="row"> ${index+1} <td> <td scope="row"> ${index + 1} <td>
<td> ${campi.name} <td> <td> ${campi.name} <td>
</tr> </tr>
`) `)
...@@ -70,13 +69,11 @@ $("#btn-update-perfil").on('click', () => { ...@@ -70,13 +69,11 @@ $("#btn-update-perfil").on('click', () => {
// Update director and coordinators profile from admin page // Update director and coordinators profile from admin page
$('#alter-password').on('change', function() { $('#alter-password').on('change', function() {
if($('#alter-password').is(':checked') ){ if ($('#alter-password').is(':checked')) {
$("#password").removeAttr('disabled'); $("#password").removeAttr('disabled');
}else{ } else {
$("#password").attr('disabled','disabled'); $("#password").attr('disabled', 'disabled');
} }
}); });
// $('#') // $('#')
</script> </script>
\ No newline at end of file
<script type="text/javascript">
function cpfMask() {
const inputCpf = document.getElementById("user-update-cpf");
let cpf = inputCpf.value;
if (cpf.length > 14){
cpf = cpf.substring(0, 14);
}
console.log(cpf.length);
cpf = cpf.replace(/\D/g, "") //Remove tudo o que não é dígito
cpf = cpf.replace(/(\d{3})(\d)/, "$1.$2") //Coloca um ponto entre o terceiro e o quarto dígitos
cpf = cpf.replace(/(\d{3})(\d)/, "$1.$2") //Coloca um ponto entre o terceiro e o quarto dígitos
//de novo (para o segundo bloco de números)
cpf = cpf.replace(/(\d{3})(\d{1,2})$/, "$1-$2") //Coloca um hífen entre o terceiro e o quarto dígitos
inputCpf.value = cpf;
}
</script>
\ No newline at end of file
...@@ -3,65 +3,65 @@ ...@@ -3,65 +3,65 @@
@section('title', 'Atulizar Perfil') @section('title', 'Atulizar Perfil')
@section('header') @section('header')
@include('layouts.header', [ @include('layouts.header', [
'user' => Auth::user(), 'user' => Auth::user(),
]) ])
@endsection @endsection
@section('nav') @section('nav')
@include('layouts.navigation', [ @include('layouts.navigation', [
'index_menu' => $index_menu, 'index_menu' => $index_menu,
]) ])
@endsection @endsection
@section('body') @section('body')
@include('components.alerts') @include('components.alerts')
<div class="d-flex justify-content-between flex-wrap flex-md-nowrap align-items-center pt-3 pb-2 mb-3 border-bottom"> <div class="d-flex justify-content-between flex-wrap flex-md-nowrap align-items-center pt-3 pb-2 mb-3 border-bottom">
<h1 class="h2"> Atualizar Perfil </h1> <h1 class="h2"> Atualizar Perfil </h1>
</div> </div>
<div class="content">
<div class="content"> <ul class="nav nav-tabs" id="myTab" role="tablist">
<!-- Tab Panel --> <li class="nav-item" role="presentation">
<div class="mb-4"> <button class="nav-link active" id="home-tab" data-bs-toggle="tab" data-bs-target="#home" type="button"
<ul class="nav nav-tabs" id="tab-link" role="tablist"> role="tab" aria-controls="home" aria-selected="true">Home</button>
<li class="nav-item">
<a class="nav-link active" id="perfil-tab" data-toggle="tab" href="#perfil" role="tab" aria-controls="perfil" aria-selected="true"> Perfil </a>
</li> </li>
<li class="nav-item"> <li class="nav-item" role="presentation">
<a class="nav-link" id="senha-tab" data-toggle="tab" href="#senha" role="tab" aria-controls="senha" aria-selected="false"> Senha </a> <button class="nav-link" id="profile-tab" data-bs-toggle="tab" data-bs-target="#profile" type="button"
role="tab" aria-controls="profile" aria-selected="false">Profile</button>
</li> </li>
</ul> </ul>
</div> <div class="tab-content" id="myTabContent">
<div class="tab-pane fade show active" id="home" role="tabpanel" aria-labelledby="home-tab">
<!-- Tab Content --> <form class="" method="post" action="{{ route('update_perfil') }}">
<div class="tab-content" id="tab-content">
<!-- Perfil -->
<div class="tab-pane fade show active" id="perfil" role="tabpanel" aria-labelledby="perfil-tab">
<form class="" method="post" action="{{ route('update_perfil') }}" >
@csrf @csrf
@method('POST') @method('POST')
<div class="form-group"> <div class="form-group mt-2">
<label for="email"> E-mail </label> <label for="email"> E-mail </label>
<input type="email" class="form-control" name="email" id="email" placeholder="example@email.com" value="{{ Auth::user()->email }}"> <input type="email" class="form-control" name="email" id="email" placeholder="example@email.com"
value="{{ Auth::user()->email }}">
<small id="email_information" class="form-text text-muted"> {{-- --}} </small> <small id="email_information" class="form-text text-muted"> {{-- --}} </small>
@error('email') @error('email')
<span class="text-danger"> {{ $message }} </span> <span class="text-danger"> {{ $message }} </span>
@enderror @enderror
</div> </div>
<div class="form-group"> <div class="form-group mt-2">
<label for="name"> Nome </label> <label for="name"> Nome </label>
<input type="name" class="form-control" name="name" id="name" placeholder="Nome Completo" value="{{ Auth::user()->name }}"> <input type="name" class="form-control" name="name" id="name" placeholder="Nome Completo"
value="{{ Auth::user()->name }}">
<small id="name_information" class="form-text text-muted"> {{-- --}} </small> <small id="name_information" class="form-text text-muted"> {{-- --}} </small>
@error('name') @error('name')
<span class="text-danger"> {{ $message }} </span> <span class="text-danger"> {{ $message }} </span>
@enderror @enderror
</div> </div>
<div class="form-group"> <div class="form-group mt-2">
<label for="document"> CPF </label> <label for="user-update-cpf"> CPF </label>
<input type="document" class="form-control" name="document" id="document" placeholder="Senha" value="{{ Auth::user()->document }}"> <input type="text" class="form-control" id="user-update-cpf" onKeyUp="cpfMask()" name="document"
value="{{ Auth::user()->document }}">
<small id="document_information" class="form-text text-muted"> {{-- --}} </small> <small id="document_information" class="form-text text-muted"> {{-- --}} </small>
@error('document') @error('document')
<span class="text-danger"> {{ $message }} </span> <span class="text-danger"> {{ $message }} </span>
...@@ -69,22 +69,21 @@ ...@@ -69,22 +69,21 @@
</div> </div>
<div class="d-flex justify-content-end"> <div class="d-flex justify-content-end">
<button class="btn btn-success" type="submit"> Atualizar </button> <button class="btn btn-success mt-4" type="submit"> Atualizar </button>
</div> </div>
</form> </form>
</div> </div>
<div class="tab-pane fade" id="profile" role="tabpanel" aria-labelledby="profile-tab">
<!-- Senha -->
<div class="tab-pane fade" id="senha" role="tabpanel" aria-labelledby="senha-tab">
<form method="post" action="{{ route('update_password') }}"> <form method="post" action="{{ route('update_password') }}">
@csrf @csrf
@method('POST') @method('POST')
<div class="row"> <div class="row">
<div class="col-6"> <div class="col-6">
<div class="form-group"> <div class="form-group mt-2">
<label for="password"> Senha </label> <label for="password"> Senha </label>
<input type="password" class="form-control" name="password" id="password" placeholder="Senha"> <input type="password" class="form-control" name="password" id="password"
placeholder="Senha">
<small id="password_information" class="form-text text-muted"> {{-- --}} </small> <small id="password_information" class="form-text text-muted"> {{-- --}} </small>
@error('password') @error('password')
<span class="text-danger"> {{ $message }} </span> <span class="text-danger"> {{ $message }} </span>
...@@ -92,10 +91,12 @@ ...@@ -92,10 +91,12 @@
</div> </div>
</div> </div>
<div class="col-6"> <div class="col-6">
<div class="form-group"> <div class="form-group mt-2">
<label for="password_confirmation"> Confirmar Senha </label> <label for="password_confirmation"> Confirmar Senha </label>
<input type="password_confirmation" class="form-control" name="password_confirmation" id="password_confirmation" placeholder="Senha"> <input type="password_confirmation" class="form-control" name="password_confirmation"
<small id="password_confirmation_information" class="form-text text-muted"> {{-- --}} </small> id="password_confirmation" placeholder="Senha">
<small id="password_confirmation_information" class="form-text text-muted"> {{-- --}}
</small>
@error('password_confirmation') @error('password_confirmation')
<span class="text-danger"> {{ $message }} </span> <span class="text-danger"> {{ $message }} </span>
@enderror @enderror
...@@ -104,10 +105,9 @@ ...@@ -104,10 +105,9 @@
</div> </div>
<div class="d-flex justify-content-end"> <div class="d-flex justify-content-end">
<button class="btn btn-success" type="submit"> Atualizar </button> <button class="btn btn-success mt-4" type="submit"> Atualizar </button>
</div>
</form>
</div> </div>
</div> </div>
</div> </div>
</div>
@endsection @endsection
\ 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