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

Adicionado redefinicaão de senha

parent d887e59b
......@@ -5,45 +5,54 @@ namespace App\Http\Controllers;
use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
class UserController extends Controller
{
{
const MENU_UPDATE_PERFIL = 0;
public function editPerfil() {
public function editPerfil()
{
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());
if($validator->fails()) {
if ($validator->fails()) {
return redirect()->back()->withErrors($validator->errors());
}
$user = User::find(Auth::user()->id);
$user->fill($request->all());
$user->save();
return redirect()->route('edit_perfil')->with('success', 'Salvo com sucesso!');
}
public function updatePassword(Request $request) {
public function updatePassword(Request $request)
{
$validator = User::validator($request->all(), true);
// if($validator->fails()) {
// return redirect()->back()->withErrors($validator->errors());
// }
if ($validator->fails()) {
return redirect()->back()->withErrors($validator->errors());
}
// $user = User::find(Auth::user()->id);
// $user->fill($request->all());
// $user->save();
$user = User::find(Auth::user()->id);
$newData = $request->all();
if($request->all()['password'] == $request->all()['password_confirmation']){
$newData['password'] = Hash::make($request->password);
}
// return redirect()->route('edit_perfil')->with('success', 'Salvo com sucesso!');
$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>
<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">
{{ __('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.') }}
</div>
@extends('auth.main')
<!-- Session Status -->
<x-auth-session-status class="mb-4" :status="session('status')" />
@section('body')
<!-- Container principal -->
<div class="ftco-section">
<!-- Validation Errors -->
<x-auth-validation-errors class="mb-4" :errors="$errors" />
<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">
<form method="POST" action="{{ route('password.email') }}">
@csrf
<!-- Validation Errors -->
<x-auth-validation-errors class="alert alert-danger mb-2" :errors="$errors" />
<!-- Email Address -->
<div>
<x-label for="email" :value="__('Email')" />
<div class="signin-form d-md-flex">
@csrf
<x-input id="email" class="block mt-1 w-full" type="email" name="email" :value="old('email')" required autofocus />
</div>
<!-- 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>
<!-- Session Status -->
<x-auth-session-status class="mb-4" :status="session('status')" />
<!-- Validation Errors -->
<x-auth-validation-errors class="mb-4" :errors="$errors" />
<div class="flex items-center justify-end mt-4">
<x-button>
{{ __('Email Password Reset Link') }}
</x-button>
<form method="POST" action="{{ route('password.email') }}">
@csrf
<!-- Email Address -->
<div class="form-group mt-3">
<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 />
</div>
<!-- Email Address -->
<div class="flex items-center justify-end mt-4">
<button type="submit" class="form-control btn btn-secondary rounded submit px-3">
Link de redefinição de senha de e-mail
</button>
</div>
</form>
</div>
</div>
</div>
</form>
</x-auth-card>
</x-guest-layout>
</div>
</div>
</div>
@endsection
\ No newline at end of file
......@@ -60,6 +60,7 @@
<a href="#" style="color: rgb(22, 21, 21);"></a>
</div>
</div>
<a href="{{ route('password.request') }}">Esqueci minha senha</a>
</div>
</form>
</div>
......
<x-guest-layout>
<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>
<!-- Validation Errors -->
<x-auth-validation-errors class="mb-4" :errors="$errors" />
<form method="POST" action="{{ route('password.update') }}">
@csrf
<!-- Password Reset Token -->
<input type="hidden" name="token" value="{{ $request->route('token') }}">
<!-- Email Address -->
<div>
<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 />
</div>
<!-- Password -->
<div class="mt-4">
<x-label for="password" :value="__('Password')" />
<x-input id="password" class="block mt-1 w-full" type="password" name="password" required />
</div>
<!-- Confirm Password -->
<div class="mt-4">
<x-label for="password_confirmation" :value="__('Confirm Password')" />
<x-input id="password_confirmation" class="block mt-1 w-full"
type="password"
name="password_confirmation" required />
</div>
<div class="flex items-center justify-end mt-4">
<x-button>
{{ __('Reset Password') }}
</x-button>
@extends('auth.main')
@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 -->
<x-auth-validation-errors class="mb-4" :errors="$errors" />
<form method="POST" action="{{ route('password.update') }}">
@csrf
<!-- Password Reset Token -->
<input type="hidden" name="token" value="{{ $request->route('token') }}">
<!-- Email Address -->
<div class="form-group mt-3">
<x-label for="email" :value="__('Email')" />
<x-input id="email" class="form-control" type="email" name="email"
:value="old('email', $request->email)" required autofocus />
</div>
<!-- Password -->
<div class="form-group mt-3">
<x-label for="password" :value="__('Password')" />
<x-input id="password" class="form-control" type="password" name="password" required />
</div>
<!-- Confirm Password -->
<div class="form-group mt-3">
<x-label for="password_confirmation" :value="__('Confirm Password')" />
<x-input id="password_confirmation" class="form-control" type="password"
name="password_confirmation" required/>
</div>
<div class="flex items-center justify-end mt-4">
<button type="submit" class="form-control btn btn-secondary rounded submit px-3">
Redefinir senha
</button>
</div>
</form>
</div>
</div>
</form>
</x-auth-card>
</x-guest-layout>
</div>
</div>
</div>
@endsection
\ No newline at end of file
......@@ -35,7 +35,7 @@
<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
</footer>
@include('layouts.user-jquery.jquery_all_users')
@if(Auth::user()->isTypeAdmin())
@include('layouts.user-jquery.jquery_admin')
@endif
......
......@@ -37,7 +37,7 @@
<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
</footer>
@include('layouts.user-jquery.jquery_all_users')
@if (Auth::user()->isTypeAdmin())
@include('layouts.user-jquery.jquery_admin')
@endif
......
<script type="text/javascript">
$( document ).ready(() => {
$(document).ready(() => {
$("#update-perfil-tab").hide()
......@@ -19,10 +18,10 @@ $( document ).ready(() => {
</tr>
`)
unidades.forEach( (unidade, index) => {
unidades.forEach((unidade, index) => {
table_unidades.append(`
<tr>
<td scope="row"> ${index+1} <td>
<td scope="row"> ${index + 1} <td>
<td> ${unidade.name} <td>
<td>
@include('components.buttons.btn-edit', ['btn_class' => 'btn btn-warning', 'route' => ''])
......@@ -50,10 +49,10 @@ $( document ).ready(() => {
</tr>
`)
campus.forEach( (campi, index) => {
campus.forEach((campi, index) => {
table.append(`
<tr>
<td scope="row"> ${index+1} <td>
<td scope="row"> ${index + 1} <td>
<td> ${campi.name} <td>
</tr>
`)
......@@ -70,13 +69,11 @@ $("#btn-update-perfil").on('click', () => {
// Update director and coordinators profile from admin page
$('#alter-password').on('change', function() {
if($('#alter-password').is(':checked') ){
$("#password").removeAttr('disabled');
}else{
$("#password").attr('disabled','disabled');
if ($('#alter-password').is(':checked')) {
$("#password").removeAttr('disabled');
} else {
$("#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,111 +3,111 @@
@section('title', 'Atulizar Perfil')
@section('header')
@include('layouts.header', [
'user' => Auth::user(),
])
@include('layouts.header', [
'user' => Auth::user(),
])
@endsection
@section('nav')
@include('layouts.navigation', [
'index_menu' => $index_menu,
])
@include('layouts.navigation', [
'index_menu' => $index_menu,
])
@endsection
@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">
<h1 class="h2"> Atualizar Perfil </h1>
</div>
<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>
</div>
<div class="content">
<!-- Tab Panel -->
<div class="mb-4">
<ul class="nav nav-tabs" id="tab-link" role="tablist">
<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 class="nav-item">
<a class="nav-link" id="senha-tab" data-toggle="tab" href="#senha" role="tab" aria-controls="senha" aria-selected="false"> Senha </a>
</li>
</ul>
</div>
<div class="content">
<!-- Tab Content -->
<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
@method('POST')
<ul class="nav nav-tabs" id="myTab" role="tablist">
<li class="nav-item" role="presentation">
<button class="nav-link active" id="home-tab" data-bs-toggle="tab" data-bs-target="#home" type="button"
role="tab" aria-controls="home" aria-selected="true">Home</button>
</li>
<li class="nav-item" role="presentation">
<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>
</ul>
<div class="tab-content" id="myTabContent">
<div class="tab-pane fade show active" id="home" role="tabpanel" aria-labelledby="home-tab">
<form class="" method="post" action="{{ route('update_perfil') }}">
@csrf
@method('POST')
<div class="form-group">
<label for="email"> E-mail </label>
<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>
@error('email')
<span class="text-danger"> {{ $message }} </span>
@enderror
</div>
<div class="form-group">
<label for="name"> Nome </label>
<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>
@error('name')
<span class="text-danger"> {{ $message }} </span>
@enderror
</div>
<div class="form-group">
<label for="document"> CPF </label>
<input type="document" class="form-control" name="document" id="document" placeholder="Senha" value="{{ Auth::user()->document }}">
<small id="document_information" class="form-text text-muted"> {{-- --}} </small>
@error('document')
<span class="text-danger"> {{ $message }} </span>
@enderror
</div>
<div class="form-group mt-2">
<label for="email"> E-mail </label>
<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>
@error('email')
<span class="text-danger"> {{ $message }} </span>
@enderror
</div>
<div class="form-group mt-2">
<label for="name"> Nome </label>
<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>
@error('name')
<span class="text-danger"> {{ $message }} </span>
@enderror
</div>
<div class="form-group mt-2">
<label for="user-update-cpf"> CPF </label>
<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>
@error('document')
<span class="text-danger"> {{ $message }} </span>
@enderror
</div>
<div class="d-flex justify-content-end">
<button class="btn btn-success" type="submit"> Atualizar </button>
</div>
</form>
</div>
<!-- Senha -->
<div class="tab-pane fade" id="senha" role="tabpanel" aria-labelledby="senha-tab">
<form method="post" action="{{ route('update_password') }}">
@csrf
@method('POST')
<div class="d-flex justify-content-end">
<button class="btn btn-success mt-4" type="submit"> Atualizar </button>
</div>
</form>
</div>
<div class="tab-pane fade" id="profile" role="tabpanel" aria-labelledby="profile-tab">
<form method="post" action="{{ route('update_password') }}">
@csrf
@method('POST')
<div class="row">
<div class="col-6">
<div class="form-group">
<label for="password"> Senha </label>
<input type="password" class="form-control" name="password" id="password" placeholder="Senha">
<small id="password_information" class="form-text text-muted"> {{-- --}} </small>
@error('password')
<span class="text-danger"> {{ $message }} </span>
@enderror
</div>
<div class="row">
<div class="col-6">
<div class="form-group mt-2">
<label for="password"> Senha </label>
<input type="password" class="form-control" name="password" id="password"
placeholder="Senha">
<small id="password_information" class="form-text text-muted"> {{-- --}} </small>
@error('password')
<span class="text-danger"> {{ $message }} </span>
@enderror
</div>
<div class="col-6">
<div class="form-group">
<label for="password_confirmation"> Confirmar Senha </label>
<input type="password_confirmation" class="form-control" name="password_confirmation" id="password_confirmation" placeholder="Senha">
<small id="password_confirmation_information" class="form-text text-muted"> {{-- --}} </small>
@error('password_confirmation')
<span class="text-danger"> {{ $message }} </span>
@enderror
</div>
</div>
<div class="col-6">
<div class="form-group mt-2">
<label for="password_confirmation"> Confirmar Senha </label>
<input type="password_confirmation" class="form-control" name="password_confirmation"
id="password_confirmation" placeholder="Senha">
<small id="password_confirmation_information" class="form-text text-muted"> {{-- --}}
</small>
@error('password_confirmation')
<span class="text-danger"> {{ $message }} </span>
@enderror
</div>
</div>
</div>
<div class="d-flex justify-content-end">
<button class="btn btn-success" type="submit"> Atualizar </button>
</div>
</form>
</div>
<div class="d-flex justify-content-end">
<button class="btn btn-success mt-4" type="submit"> Atualizar </button>
</div>
</div>
</div>
@endsection
</div>
@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