Skip to content

Instantly share code, notes, and snippets.

@NandoKstroNet
Last active January 26, 2022 16:16
Show Gist options
  • Save NandoKstroNet/ba4bfdc773171c74dde698ad96b4c050 to your computer and use it in GitHub Desktop.
Save NandoKstroNet/ba4bfdc773171c74dde698ad96b4c050 to your computer and use it in GitHub Desktop.
Tela de Registro e Login da Loja Tenancy com Laravel em https://codeexperts.com.br/curso/laravel-tenancy-1
<x-guest-layout>
<div class="max-w-7xl mx-auto sm:px-6 lg:px-8 flex">
<!-- Sign-in -->
<div class="w-1/2 border-r border-gray-400 mt-8 p-4">
<h3 class="font-extrabold text-2xl w-full pb-8 pl-4">Login (Você já possui uma conta?)</h3>
<form action="{{route('sign.in', request('subdomain'))}}" method="post">
@csrf
<div class="block mb-10">
<label class="font-bold">Email</label>
<input type="text" name="login[email]" value="{{old('login.email')}}" class="w-full block">
@error('login.email')
{{$message}}
@enderror
</div>
<div class="block mb-10">
<label class="font-bold">Senha</label>
<input type="password" name="login[password]" value="{{old('login.password')}}" class="w-full block">
@error('login.password')
{{$message}}
@enderror
</div>
<button class="text-xl font-bold px-4 py-2 rounded bg-green-600 text-white shadow hover:bg-green-300 transition ease-in-out delay-150 uppercase">Login</button>
</form>
</div>
<!-- Sign-up -->
<div class="w-1/2 ml-10 mt-8">
<h3 class="font-extrabold text-2xl w-full pb-8 pl-4">Registro (Não têm conta?)</h3>
<form action="{{route('sign.up', request('subdomain'))}}" method="post">
@csrf
<div class="block mb-10">
<label class="font-bold">Nome Completo</label>
<input type="text" name="register[name]" value="{{old('register.name')}}" class="w-full block">
@error('register.name')
{{$message}}
@enderror
</div>
<div class="block mb-10">
<label class="font-bold">Email</label>
<input type="email" name="register[email]" value="{{old('register.email')}}" class="w-full block">
@error('register.email')
{{$message}}
@enderror
</div>
<div class="block mb-10">
<label class="font-bold">Senha</label>
<input type="password" name="register[password]" value="{{old('register.password')}}" class="w-full block">
@error('register.password')
{{$message}}
@enderror
</div>
<div class="block mb-10">
<label class="font-bold">Confirmar Senha</label>
<input type="password" name="register[password_confirmation]" value="{{old('register.password_confirmation')}}" class="w-full block">
</div>
<button class="text-xl font-bold px-4 py-2 rounded bg-green-600 text-white shadow hover:bg-green-300 transition ease-in-out delay-150 uppercase">Registrar</button>
</form>
</div>
</div>
</x-guest-layout>
<?php
namespace App\Http\Controllers\Front;
use App\Http\Controllers\Controller;
use App\Models\Store;
use App\Models\User;
use App\Services\AuthenticateService;
use App\Services\RegisterService;
use Illuminate\Http\Request;
use Illuminate\Validation\Rules;
class AuthenticateController extends Controller
{
public function index($subdomain)
{
return view('front.sign-in-up');
}
public function signIn($subdomain, Request $request, AuthenticateService $authenticateService, Store $store)
{
$data = $request->validate([
'login.email' => ['required', 'string', 'email', 'max:255'],
'login.password' => ['required', Rules\Password::defaults()],
]);
$data['login']['tenant_id'] = $store->whereSubdomain($subdomain)->first()->tenant_id;
$authenticateService->login($data['login'], new User());
return redirect()->intended();
}
public function signUp($subdomain, Request $request, RegisterService $registerService, Store $store)
{
$data = $request->validate([
'register.name' => ['required', 'string', 'max:255'],
'register.email' => ['required', 'string', 'email', 'max:255', 'unique:users,email'],
'register.password' => ['required', 'confirmed', Rules\Password::defaults()],
]);
$store = $store->whereSubdomain($subdomain)->first(['id', 'tenant_id']);
$data['register']['store_id'] = $store->tenant_id;
$data['register']['tenant_id'] = $store->id;
$registerService->register($data['register'], new User());
return redirect()->intended();
}
public function logout($subdomain, Request $request)
{
auth()->logout();
return redirect()->route('front.store', $request->domain);
}
}
<?php
Route::name('sign.')->group(function() {
Route::get('/sign-in', [\App\Http\Controllers\Front\AuthenticateController::class, 'index'])->name('index');
Route::post('/sign-in', [\App\Http\Controllers\Front\AuthenticateController::class, 'signIn'])->name('in');
Route::post('/sign-up', [\App\Http\Controllers\Front\AuthenticateController::class, 'signUp'])->name('up');
});
Route::get('logout', [\App\Http\Controllers\Front\AuthenticateController::class, 'logout'])->name('up');
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment