add auth by apple

parent 191f1ef3
...@@ -16,6 +16,7 @@ class UserController extends Controller ...@@ -16,6 +16,7 @@ class UserController extends Controller
} }
public function store(Request $request) { public function store(Request $request) {
//dd($request->all());
$request->validate([ $request->validate([
'name' => 'required', 'name' => 'required',
...@@ -23,13 +24,11 @@ class UserController extends Controller ...@@ -23,13 +24,11 @@ class UserController extends Controller
'password' => 'required|confirmed', 'password' => 'required|confirmed',
]); ]);
//dd($request->all());
session()->flash('success', 'Successful registration');
$user = User::create([ $user = User::create([
'name' => $request->name, // || 'name' => $request->input('name'), 'name' => $request->name, // || 'name' => $request->input('name'),
'email' => $request->email, 'email' => $request->email,
'password' => Hash::make($request->password), 'password' => Hash::make($request->password),
'email_verified_at' => NOW(),
]); ]);
session()->flash('success', 'Successful registration'); session()->flash('success', 'Successful registration');
...@@ -37,6 +36,31 @@ class UserController extends Controller ...@@ -37,6 +36,31 @@ class UserController extends Controller
return redirect()->route('home'); // || redirect()->home(); || redirect('/'); 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() { public function loginForm() {
return view('user.login'); return view('user.login');
} }
...@@ -82,6 +106,27 @@ class UserController extends Controller ...@@ -82,6 +106,27 @@ class UserController extends Controller
return redirect()->route('home'); 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 ...@@ -12,6 +12,6 @@ class VerifyCsrfToken extends Middleware
* @var array<int, string> * @var array<int, string>
*/ */
protected $except = [ protected $except = [
// '/login/apple/callback',
]; ];
} }
...@@ -18,6 +18,11 @@ class EventServiceProvider extends ServiceProvider ...@@ -18,6 +18,11 @@ class EventServiceProvider extends ServiceProvider
Registered::class => [ Registered::class => [
SendEmailVerificationNotification::class, SendEmailVerificationNotification::class,
], ],
\SocialiteProviders\Manager\SocialiteWasCalled::class => [
//\SocialiteProviders\Apple\AppleExtendSocialite::class.'@handle',
[\SocialiteProviders\Apple\AppleExtendSocialite::class, 'handle']
],
]; ];
/** /**
......
...@@ -6,11 +6,14 @@ ...@@ -6,11 +6,14 @@
"license": "MIT", "license": "MIT",
"require": { "require": {
"php": "^8.1", "php": "^8.1",
"genealabs/laravel-sign-in-with-apple": "^0.7.0",
"genealabs/laravel-socialiter": "^10.0",
"guzzlehttp/guzzle": "^7.2", "guzzlehttp/guzzle": "^7.2",
"laravel/framework": "^10.10", "laravel/framework": "^10.10",
"laravel/sanctum": "^3.2", "laravel/sanctum": "^3.2",
"laravel/socialite": "^5.6", "laravel/socialite": "^5.6",
"laravel/tinker": "^2.8" "laravel/tinker": "^2.8",
"socialiteproviders/apple": "^5.5"
}, },
"require-dev": { "require-dev": {
"fakerphp/faker": "^1.9.1", "fakerphp/faker": "^1.9.1",
...@@ -59,7 +62,8 @@ ...@@ -59,7 +62,8 @@
"sort-packages": true, "sort-packages": true,
"allow-plugins": { "allow-plugins": {
"pestphp/pest-plugin": true, "pestphp/pest-plugin": true,
"php-http/discovery": true "php-http/discovery": true,
"symfony/thanks": true
} }
}, },
"minimum-stability": "stable", "minimum-stability": "stable",
......
This diff is collapsed.
...@@ -37,16 +37,16 @@ return [ ...@@ -37,16 +37,16 @@ return [
'redirect' => env('GOOGLE_REDIRECT'), 'redirect' => env('GOOGLE_REDIRECT'),
], ],
'apple' => [
'client_id' => env('APPLE_CLIENT_ID'),
'client_secret' => env('APPLE_CLIENT_SECRET'),
'redirect' => env('APPLE_REDIRECT'),
],
'facebook' => [ 'facebook' => [
'client_id' => env('FACEBOOK_CLIENT_ID'), 'client_id' => env('FACEBOOK_CLIENT_ID'),
'client_secret' => env('FACEBOOK_CLIENT_SECRET'), 'client_secret' => env('FACEBOOK_CLIENT_SECRET'),
'redirect' => env('FACEBOOK_REDIRECT'), '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
...@@ -29,7 +29,9 @@ ...@@ -29,7 +29,9 @@
<a class="" href="{{ route('login.google') }}">Войти через Google</a><br> <a class="" href="{{ route('login.google') }}">Войти через Google</a><br>
<a class="" href="{{ route('login.facebook') }}">Войти через Facebook</a><br> <a class="" href="{{ route('login.facebook') }}">Войти через Facebook</a><br>
@signInWithApple("black", true, "sign-in", 10)
</form> </form>
<a class="" href="{{ route('register.create') }}">Регiстрацiя</a> <a class="" href="{{ route('register.create') }}">Регiстрацiя</a>
......
...@@ -7,7 +7,37 @@ ...@@ -7,7 +7,37 @@
<section> <section>
<div class='container'> <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> </div>
</section> </section>
......
...@@ -5,6 +5,7 @@ namespace App\Http\Controllers; ...@@ -5,6 +5,7 @@ namespace App\Http\Controllers;
use Illuminate\Support\Facades\Route; use Illuminate\Support\Facades\Route;
use Laravel\Socialite\Facades\Socialite; use Laravel\Socialite\Facades\Socialite;
/* /*
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------
| Web Routes | Web Routes
...@@ -27,6 +28,30 @@ Route::group(['middleware' => 'guest'], function(){ ...@@ -27,6 +28,30 @@ Route::group(['middleware' => 'guest'], function(){
Route::post('/register', [UserController::class, 'store']) -> name('register.store'); Route::post('/register', [UserController::class, 'store']) -> name('register.store');
Route::get('/login', [UserController::class, 'loginForm']) -> name('login.create'); Route::get('/login', [UserController::class, 'loginForm']) -> name('login.create');
Route::post('/login', [UserController::class, 'login']) -> name('login'); Route::post('/login', [UserController::class, 'login']) -> name('login');
//Auth Google
Route::get('/login/google', function () {
return Socialite::driver('google')->redirect();
}) -> name('login.google');
Route::get('/login/google/callback', [UserController::class, 'loginGoogle']);
//Auth Facebook
Route::get('login/facebook', function () {
return Socialite::driver('facebook')->redirect();
}) -> 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);
});
}); });
...@@ -34,38 +59,7 @@ Route::group(['middleware' => 'auth'], function(){ ...@@ -34,38 +59,7 @@ Route::group(['middleware' => 'auth'], function(){
Route::get('/logout', [UserController::class, 'logout']) -> name('logout'); Route::get('/logout', [UserController::class, 'logout']) -> name('logout');
Route::get('/settings', [UserController::class, 'settings']) -> name('settings'); Route::get('/settings', [UserController::class, 'settings']) -> name('settings');
Route::post('/settings', [UserController::class, 'edit']) -> name('settings.edit');
}); });
//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');
//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
});
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