Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
L
laravel-test
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Александр Чаплыгин
laravel-test
Commits
191f1ef3
Commit
191f1ef3
authored
Jun 15, 2023
by
Александр Чаплыгин
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add google=auth
parent
27bbe3bc
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
249 additions
and
31 deletions
+249
-31
UserController.php
src/app/Http/Controllers/UserController.php
+17
-13
Authenticate.php
src/app/Http/Middleware/Authenticate.php
+1
-1
RedirectIfAuthenticated.php
src/app/Http/Middleware/RedirectIfAuthenticated.php
+2
-1
composer.json
src/composer.json
+1
-0
composer.lock
src/composer.lock
+147
-1
project.php
src/config/project.php
+2
-1
services.php
src/config/services.php
+18
-0
layout.blade.php
src/resources/views/layouts/layout.blade.php
+5
-4
create.blade.php
src/resources/views/user/create.blade.php
+3
-2
login.blade.php
src/resources/views/user/login.blade.php
+7
-2
web.php
src/routes/web.php
+46
-6
No files found.
src/app/Http/Controllers/UserController.php
View file @
191f1ef3
...
@@ -6,6 +6,7 @@ use App\Models\User;
...
@@ -6,6 +6,7 @@ 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
;
use
Illuminate\Support\Facades\Hash
;
use
Laravel\Socialite\Facades\Socialite
;
class
UserController
extends
Controller
class
UserController
extends
Controller
{
{
...
@@ -25,7 +26,6 @@ class UserController extends Controller
...
@@ -25,7 +26,6 @@ class UserController extends Controller
//dd($request->all());
//dd($request->all());
session
()
->
flash
(
'success'
,
'Successful registration'
);
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
,
...
@@ -48,8 +48,6 @@ class UserController extends Controller
...
@@ -48,8 +48,6 @@ class UserController extends Controller
'password'
=>
'required'
,
'password'
=>
'required'
,
]);
]);
//dd($request->all());
if
(
Auth
::
attempt
([
if
(
Auth
::
attempt
([
'email'
=>
$request
->
email
,
'email'
=>
$request
->
email
,
'password'
=>
$request
->
password
,
'password'
=>
$request
->
password
,
...
@@ -65,17 +63,23 @@ class UserController extends Controller
...
@@ -65,17 +63,23 @@ class UserController extends Controller
}
}
public
function
settings
()
{
public
function
settings
()
{
return
view
(
'user.settings'
);
if
(
Auth
::
check
())
{
}
return
view
(
'user.settings'
);
}
else
{
public
function
loginGoogle
()
{
$message
=
'Пользователь не авторизован!'
;
$googleUser
=
Socialite
::
driver
(
'google'
)
->
user
();
return
view
(
'errors.error'
,
compact
(
'message'
));
$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'
);
}
}
...
...
src/app/Http/Middleware/Authenticate.php
100755 → 100644
View file @
191f1ef3
...
@@ -12,6 +12,6 @@ class Authenticate extends Middleware
...
@@ -12,6 +12,6 @@ class Authenticate extends Middleware
*/
*/
protected
function
redirectTo
(
Request
$request
)
:
?
string
protected
function
redirectTo
(
Request
$request
)
:
?
string
{
{
return
$request
->
expectsJson
()
?
null
:
route
(
'login'
);
return
$request
->
expectsJson
()
?
null
:
route
(
'login'
);
// перенаправление для не зарегистрированного
}
}
}
}
src/app/Http/Middleware/RedirectIfAuthenticated.php
100755 → 100644
View file @
191f1ef3
...
@@ -21,7 +21,8 @@ class RedirectIfAuthenticated
...
@@ -21,7 +21,8 @@ class RedirectIfAuthenticated
foreach
(
$guards
as
$guard
)
{
foreach
(
$guards
as
$guard
)
{
if
(
Auth
::
guard
(
$guard
)
->
check
())
{
if
(
Auth
::
guard
(
$guard
)
->
check
())
{
return
redirect
(
RouteServiceProvider
::
HOME
);
//return redirect(RouteServiceProvider::HOME);
return
redirect
()
->
route
(
'home'
);
// перенаправление для зарегистрированного
}
}
}
}
...
...
src/composer.json
View file @
191f1ef3
...
@@ -9,6 +9,7 @@
...
@@ -9,6 +9,7 @@
"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/tinker"
:
"^2.8"
"laravel/tinker"
:
"^2.8"
},
},
"require-dev"
:
{
"require-dev"
:
{
...
...
src/composer.lock
View file @
191f1ef3
...
@@ -4,7 +4,7 @@
...
@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
"This file is @generated automatically"
],
],
"content-hash": "a
a322c53454393ed775cfe4807d54a50
",
"content-hash": "a
82cca88f00f5740ba7f164043bf06fc
",
"packages": [
"packages": [
{
{
"name": "brick/math",
"name": "brick/math",
...
@@ -1300,6 +1300,76 @@
...
@@ -1300,6 +1300,76 @@
},
},
"time": "2023-01-30T18:31:20+00:00"
"time": "2023-01-30T18:31:20+00:00"
},
},
{
"name": "laravel/socialite",
"version": "v5.6.3",
"source": {
"type": "git",
"url": "https://github.com/laravel/socialite.git",
"reference": "00ea7f8630673ea49304fc8a9fca5a64eb838c7e"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/laravel/socialite/zipball/00ea7f8630673ea49304fc8a9fca5a64eb838c7e",
"reference": "00ea7f8630673ea49304fc8a9fca5a64eb838c7e",
"shasum": ""
},
"require": {
"ext-json": "*",
"guzzlehttp/guzzle": "^6.0|^7.0",
"illuminate/contracts": "^6.0|^7.0|^8.0|^9.0|^10.0",
"illuminate/http": "^6.0|^7.0|^8.0|^9.0|^10.0",
"illuminate/support": "^6.0|^7.0|^8.0|^9.0|^10.0",
"league/oauth1-client": "^1.10.1",
"php": "^7.2|^8.0"
},
"require-dev": {
"mockery/mockery": "^1.0",
"orchestra/testbench": "^4.0|^5.0|^6.0|^7.0|^8.0",
"phpstan/phpstan": "^1.10",
"phpunit/phpunit": "^8.0|^9.3"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "5.x-dev"
},
"laravel": {
"providers": [
"Laravel\\Socialite\\SocialiteServiceProvider"
],
"aliases": {
"Socialite": "Laravel\\Socialite\\Facades\\Socialite"
}
}
},
"autoload": {
"psr-4": {
"Laravel\\Socialite\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Taylor Otwell",
"email": "taylor@laravel.com"
}
],
"description": "Laravel wrapper around OAuth 1 & OAuth 2 libraries.",
"homepage": "https://laravel.com",
"keywords": [
"laravel",
"oauth"
],
"support": {
"issues": "https://github.com/laravel/socialite/issues",
"source": "https://github.com/laravel/socialite"
},
"time": "2023-06-06T13:42:43+00:00"
},
{
{
"name": "laravel/tinker",
"name": "laravel/tinker",
"version": "v2.8.1",
"version": "v2.8.1",
...
@@ -1760,6 +1830,82 @@
...
@@ -1760,6 +1830,82 @@
],
],
"time": "2022-04-17T13:12:02+00:00"
"time": "2022-04-17T13:12:02+00:00"
},
},
{
"name": "league/oauth1-client",
"version": "v1.10.1",
"source": {
"type": "git",
"url": "https://github.com/thephpleague/oauth1-client.git",
"reference": "d6365b901b5c287dd41f143033315e2f777e1167"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/thephpleague/oauth1-client/zipball/d6365b901b5c287dd41f143033315e2f777e1167",
"reference": "d6365b901b5c287dd41f143033315e2f777e1167",
"shasum": ""
},
"require": {
"ext-json": "*",
"ext-openssl": "*",
"guzzlehttp/guzzle": "^6.0|^7.0",
"guzzlehttp/psr7": "^1.7|^2.0",
"php": ">=7.1||>=8.0"
},
"require-dev": {
"ext-simplexml": "*",
"friendsofphp/php-cs-fixer": "^2.17",
"mockery/mockery": "^1.3.3",
"phpstan/phpstan": "^0.12.42",
"phpunit/phpunit": "^7.5||9.5"
},
"suggest": {
"ext-simplexml": "For decoding XML-based responses."
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.0-dev",
"dev-develop": "2.0-dev"
}
},
"autoload": {
"psr-4": {
"League\\OAuth1\\Client\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Ben Corlett",
"email": "bencorlett@me.com",
"homepage": "http://www.webcomm.com.au",
"role": "Developer"
}
],
"description": "OAuth 1.0 Client Library",
"keywords": [
"Authentication",
"SSO",
"authorization",
"bitbucket",
"identity",
"idp",
"oauth",
"oauth1",
"single sign on",
"trello",
"tumblr",
"twitter"
],
"support": {
"issues": "https://github.com/thephpleague/oauth1-client/issues",
"source": "https://github.com/thephpleague/oauth1-client/tree/v1.10.1"
},
"time": "2022-04-15T14:02:14+00:00"
},
{
{
"name": "monolog/monolog",
"name": "monolog/monolog",
"version": "3.3.1",
"version": "3.3.1",
...
...
src/config/project.php
View file @
191f1ef3
...
@@ -3,6 +3,7 @@
...
@@ -3,6 +3,7 @@
return
[
return
[
'name'
=>
'Reblum'
,
'name'
=>
'Reblum'
,
'title'
=>
'Reblum - portrait retouch app'
,
'title'
=>
'Reblum - portrait retouch app'
,
'minificate_static'
=>
true
'minificate_static'
=>
true
,
'empty_password'
=>
'100'
,
];
];
src/config/services.php
100755 → 100644
View file @
191f1ef3
...
@@ -30,5 +30,23 @@ return [
...
@@ -30,5 +30,23 @@ return [
'secret'
=>
env
(
'AWS_SECRET_ACCESS_KEY'
),
'secret'
=>
env
(
'AWS_SECRET_ACCESS_KEY'
),
'region'
=>
env
(
'AWS_DEFAULT_REGION'
,
'us-east-1'
),
'region'
=>
env
(
'AWS_DEFAULT_REGION'
,
'us-east-1'
),
],
],
'google'
=>
[
'client_id'
=>
env
(
'GOOGLE_CLIENT_ID'
),
'client_secret'
=>
env
(
'GOOGLE_CLIENT_SECRET'
),
'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'
),
],
];
];
src/resources/views/layouts/layout.blade.php
View file @
191f1ef3
...
@@ -29,15 +29,16 @@
...
@@ -29,15 +29,16 @@
<header
id=
"header"
class=
"fixed-top"
>
<header
id=
"header"
class=
"fixed-top"
>
<div
class=
"container d-flex align-items-center justify-content-between"
>
<div
class=
"container d-flex align-items-center justify-content-between"
>
<h1
class=
"logo"
><a
href=
"{{ route('home') }}"
>
{{ config('project.name') }}
</a></h1>
<h1
class=
"logo"
><a
href=
"{{ route('home') }}"
>
{{ config('project.name') }}
</a></h1>
@auth
@auth
<a
class=
""
href=
"{{ url('settings') }}"
>
Налаштування
</a>
<a
class=
""
href=
"{{ url('settings') }}"
>
Налаштування
</a>
<a
class=
""
href=
"{{ route('logout') }}"
>
Вийти
</a>
<a
class=
""
href=
"{{ route('logout') }}"
>
Вийти
</a>
@else
@endauth
@guest
<a
class=
""
href=
"{{ route('login.create') }}"
>
Вхiд
</a>
<a
class=
""
href=
"{{ route('login.create') }}"
>
Вхiд
</a>
<a
class=
""
href=
"{{ route('register.create') }}"
>
Регiстрацiя
</a>
<a
class=
""
href=
"{{ route('register.create') }}"
>
Регiстрацiя
</a>
@end
auth
@end
guest
@yield('head_content')
@yield('head_content')
</div>
</div>
...
...
src/resources/views/user/create.blade.php
View file @
191f1ef3
...
@@ -33,8 +33,9 @@
...
@@ -33,8 +33,9 @@
<input class="
form
-
control
" type="
password
" id="
password_confirmation
" name="
password_confirmation
">
<input class="
form
-
control
" type="
password
" id="
password_confirmation
" name="
password_confirmation
">
</div>
</div>
<div class="
form
-
group
">
<button type="
submit
" class="
btn
btn
-
primary
">Send</button>
<button type="
submit
" class="
btn
btn
-
primary
">Send</button>
</div>
</form>
</form>
...
...
src/resources/views/user/login.blade.php
View file @
191f1ef3
...
@@ -22,8 +22,13 @@
...
@@ -22,8 +22,13 @@
<label for='
password
'>Password</label>
<label for='
password
'>Password</label>
<input class="form-control" type="password" id="password" name="password">
<input class="form-control" type="password" id="password" name="password">
</div>
</div>
<button type="submit" class="btn btn-primary">Войти</button>
<div class="form-group">
<button type="submit" class="btn btn-primary">Войти</button>
</div>
<a class="" href="{{ route('
login
.
google
') }}">Войти через Google</a><br>
<a class="" href="{{ route('
login
.
facebook
') }}">Войти через Facebook</a><br>
</form>
</form>
...
...
src/routes/web.php
View file @
191f1ef3
...
@@ -3,6 +3,7 @@
...
@@ -3,6 +3,7 @@
namespace
App\Http\Controllers
;
namespace
App\Http\Controllers
;
use
Illuminate\Support\Facades\Route
;
use
Illuminate\Support\Facades\Route
;
use
Laravel\Socialite\Facades\Socialite
;
/*
/*
|--------------------------------------------------------------------------
|--------------------------------------------------------------------------
...
@@ -19,13 +20,52 @@ Route::get('/', function () {
...
@@ -19,13 +20,52 @@ Route::get('/', function () {
return
view
(
'home'
);
return
view
(
'home'
);
})
->
name
(
'home'
);
})
->
name
(
'home'
);
Route
::
get
(
'/register'
,
[
UserController
::
class
,
'create'
])
->
name
(
'register.create'
);
Route
::
post
(
'/register'
,
[
UserController
::
class
,
'store'
])
->
name
(
'register.store'
);
Route
::
get
(
'/login'
,
[
UserController
::
class
,
'loginForm'
])
->
name
(
'login.create'
);
Route
::
group
([
'middleware'
=>
'guest'
],
function
(){
Route
::
post
(
'/login'
,
[
UserController
::
class
,
'login'
])
->
name
(
'login'
);
Route
::
get
(
'/logout'
,
[
UserController
::
class
,
'logout'
])
->
name
(
'logout'
);
Route
::
get
(
'/register'
,
[
UserController
::
class
,
'create'
])
->
name
(
'register.create'
);
Route
::
post
(
'/register'
,
[
UserController
::
class
,
'store'
])
->
name
(
'register.store'
);
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
()
{
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
});
Route
::
get
(
'/settings'
,
[
UserController
::
class
,
'settings'
])
->
name
(
'settings'
);
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment