add auth by apple

parent 191f1ef3
......@@ -16,6 +16,7 @@ class UserController extends Controller
}
public function store(Request $request) {
//dd($request->all());
$request->validate([
'name' => 'required',
......@@ -23,13 +24,11 @@ class UserController extends Controller
'password' => 'required|confirmed',
]);
//dd($request->all());
session()->flash('success', 'Successful registration');
$user = User::create([
'name' => $request->name, // || 'name' => $request->input('name'),
'email' => $request->email,
'password' => Hash::make($request->password),
'email_verified_at' => NOW(),
]);
session()->flash('success', 'Successful registration');
......@@ -37,6 +36,31 @@ class UserController extends Controller
return redirect()->route('home'); // || redirect()->home(); || redirect('/');
}
public function edit(Request $request) {
//dd($request->all());
$request->validate([
'name' => 'required',
'email' => 'required|email',
'password' => 'required|confirmed',
]);
$user = Auth()->user();
$user->name = $request->name;
$user->email = $request->email;
$user->password = Hash::make($request->password);
$user->email_verified_at = NOW();
if ($user->save()) {
session()->flash('success', 'Sittings saved successful');
return redirect()->back();
}
return redirect()->back()->with('error', 'Sittings saving error');
}
public function loginForm() {
return view('user.login');
}
......@@ -82,6 +106,27 @@ class UserController extends Controller
return redirect()->route('home');
}
public function loginFacebook() {
$facebookUser = Socialite::driver('facebook')->user();
dd($facebookUser);
/*
$user = User::where('email','=', $googleUser->email)->first();
if (!$user) {
$user = User::create([
'name' => $googleUser->name,
'email' => $googleUser->email,
'password' => Hash::make(config('project.empty_password')),
]);
}
Auth::login($user);
return redirect()->route('home');
*
*/
}
}
......@@ -12,6 +12,6 @@ class VerifyCsrfToken extends Middleware
* @var array<int, string>
*/
protected $except = [
//
'/login/apple/callback',
];
}
......@@ -18,6 +18,11 @@ class EventServiceProvider extends ServiceProvider
Registered::class => [
SendEmailVerificationNotification::class,
],
\SocialiteProviders\Manager\SocialiteWasCalled::class => [
//\SocialiteProviders\Apple\AppleExtendSocialite::class.'@handle',
[\SocialiteProviders\Apple\AppleExtendSocialite::class, 'handle']
],
];
/**
......
......@@ -6,11 +6,14 @@
"license": "MIT",
"require": {
"php": "^8.1",
"genealabs/laravel-sign-in-with-apple": "^0.7.0",
"genealabs/laravel-socialiter": "^10.0",
"guzzlehttp/guzzle": "^7.2",
"laravel/framework": "^10.10",
"laravel/sanctum": "^3.2",
"laravel/socialite": "^5.6",
"laravel/tinker": "^2.8"
"laravel/tinker": "^2.8",
"socialiteproviders/apple": "^5.5"
},
"require-dev": {
"fakerphp/faker": "^1.9.1",
......@@ -59,7 +62,8 @@
"sort-packages": true,
"allow-plugins": {
"pestphp/pest-plugin": true,
"php-http/discovery": true
"php-http/discovery": true,
"symfony/thanks": true
}
},
"minimum-stability": "stable",
......
This diff is collapsed.
......@@ -37,16 +37,16 @@ return [
'redirect' => env('GOOGLE_REDIRECT'),
],
'apple' => [
'client_id' => env('APPLE_CLIENT_ID'),
'client_secret' => env('APPLE_CLIENT_SECRET'),
'redirect' => env('APPLE_REDIRECT'),
],
'facebook' => [
'client_id' => env('FACEBOOK_CLIENT_ID'),
'client_secret' => env('FACEBOOK_CLIENT_SECRET'),
'redirect' => env('FACEBOOK_REDIRECT'),
],
'apple' => [
'client_id' => env('APPLE_CLIENT_ID'),
'client_secret' => env('APPLE_CLIENT_SECRET'),
'redirect' => env('APPLE_REDIRECT')
],
];
@extends('layouts.layout')
@section('content')
<!-- ======= Auth Section ======= -->
<section id="auth" class="auth">
<div class="container">
<h4>Авторизацiя</h4>
<p>Виконайте вхiд</p>
<form method="post" action="{{ route('register.store') }}">
@csrf
<div class="form-group">
<label for='email'>email</label>
<input class="form-control" type="email" id="email" name="email">
</div>
<div class="form-group">
<label for='name'>Ваше имя</label>
<input class="form-control" type="password" id="password" name="password">
</div>
<input class="btn btn-primary" type="submit" value="Вхiд">
</form>
<a class="" href="{{ route('register.create') }}">Регiстрацiя</a>
</div>
</section><!-- End Auth Section -->
@endsection
\ No newline at end of file
......@@ -30,6 +30,8 @@
<a class="" href="{{ route('login.google') }}">Войти через Google</a><br>
<a class="" href="{{ route('login.facebook') }}">Войти через Facebook</a><br>
@signInWithApple("black", true, "sign-in", 10)
</form>
<a class="" href="{{ route('register.create') }}">Регiстрацiя</a>
......
......@@ -7,7 +7,37 @@
<section>
<div class='container'>
<h4>Налаштування {{ auth()->user()->name }}</h4>
<h4>Налаштування</h4>
<form method="post" action="{{ route('settings.edit') }}">
@csrf
<div class="form-group">
<label for='name'>Ваше имя</label>
<input class="form-control" type="text" id="name" name="name" value="{{ auth()->user()->name }}">
</div>
<div class="form-group">
<label for='email'>Email address</label>
<input class="form-control" type="email" id="email" name="email" value="{{ auth()->user()->email }}">
</div>
<div class="form-group">
<label for='password'>Password</label>
<input class="form-control" type="password" id="password" name="password">
</div>
<div class="form-group">
<label for='password_confirmation'>Confirm password</label>
<input class="form-control" type="password" id="password_confirmation" name="password_confirmation">
</div>
<div class="form-group">
<button type="submit" class="btn btn-primary">Зберiгти</button>
</div>
</form>
</div>
</section>
......
......@@ -5,6 +5,7 @@ namespace App\Http\Controllers;
use Illuminate\Support\Facades\Route;
use Laravel\Socialite\Facades\Socialite;
/*
|--------------------------------------------------------------------------
| Web Routes
......@@ -28,44 +29,37 @@ Route::group(['middleware' => 'guest'], function(){
Route::get('/login', [UserController::class, 'loginForm']) -> name('login.create');
Route::post('/login', [UserController::class, 'login']) -> name('login');
});
Route::group(['middleware' => 'auth'], function(){
Route::get('/logout', [UserController::class, 'logout']) -> name('logout');
Route::get('/settings', [UserController::class, 'settings']) -> name('settings');
});
//Auth Google
Route::get('/login/google', function () {
//Auth Google
Route::get('/login/google', function () {
return Socialite::driver('google')->redirect();
}) -> name('login.google');
Route::get('/login/google/callback', [UserController::class, 'loginGoogle']) -> name('register.store');
}) -> name('login.google');
Route::get('/login/google/callback', [UserController::class, 'loginGoogle']);
//Auth Facebook
Route::get('login/facebook', function () {
//Auth Facebook
Route::get('login/facebook', function () {
return Socialite::driver('facebook')->redirect();
}) -> name('login.facebook');
Route::get('login/facebook/callback', function () {
$user = Socialite::driver('facebook')->user();
// $user->token
});
}) -> name('login.facebook');
Route::get('/login/facebook/callback', [UserController::class, 'loginFacebook']);
//Auth Apple
Route::get('login/apple', function () {
return Socialite::driver('apple')->redirect();
//return Socialite::driver("sign-in-with-apple")->scopes(["name", "email"])->redirect();
}) -> name('login.apple');
Route::post('login/apple/callback', function () {
$user = Socialite::driver('apple')->user();
//$user = Socialite::driver("sign-in-with-apple")->user();
dd($user);
});
});
Route::group(['middleware' => 'auth'], function(){
Route::get('/logout', [UserController::class, 'logout']) -> name('logout');
Route::get('/settings', [UserController::class, 'settings']) -> name('settings');
Route::post('/settings', [UserController::class, 'edit']) -> name('settings.edit');
});
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