Toggle navigation
Toggle navigation
This project
Loading...
Sign in
OnePoem
/
OnePoem-Server
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Snippets
Network
Create a new issue
Builds
Commits
Issue Boards
Authored by
李帅
2022-06-10 20:21:58 +0800
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
7f525fa5d49033bfa2bc767b8c6b5e1e97304a43
7f525fa5
1 parent
2f4e6d90
1.优化用户登录,注销。
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
164 additions
and
65 deletions
app/Http/Controllers/V1/AuthController.php
app/Http/Controllers/V1/UserController.php
routes/api.php
app/Http/Controllers/V1/AuthController.php
View file @
7f525fa
...
...
@@ -3,14 +3,14 @@
namespace
App\Http\Controllers\V1
;
use
App\Http\Controllers\Controller
;
use
App\Models\OneUser
;
use
App\Models\User
;
use
App\Models\UserProfile
;
use
Illuminate\Http\Request
;
use
Illuminate\Support\Facades\Auth
;
use
Illuminate\Support\Facades\Validator
;
use
Jiannei\Response\Laravel\Support\Facades\Response
;
use
Laravel\Socialite\Facades\Socialite
;
use
App\Jobs\SendVerificationMessage
;
use
Illuminate\Support\Facades\Redis
;
class
AuthController
extends
Controller
{
...
...
@@ -43,7 +43,10 @@ class AuthController extends Controller
$socialUser
=
Socialite
::
driver
(
$service
)
->
stateless
()
->
user
();
$user
=
User
::
query
()
->
where
(
'provider'
,
$service
)
->
where
(
'provider_id'
,
$socialUser
->
id
)
->
first
();
$user
=
User
::
query
()
->
where
(
'provider'
,
$service
)
->
where
(
'provider_id'
,
$socialUser
->
id
)
->
where
(
'state'
,
1
)
->
first
();
if
(
$user
==
null
){
// 如果该用户不存在则将其保存到 users 表
...
...
@@ -72,4 +75,108 @@ class AuthController extends Controller
return
Response
::
success
(
$response
);
}
public
function
socialite
(
Request
$request
,
$service
)
{
$validator
=
Validator
::
make
([
'token'
=>
$request
->
token
,
'provider'
=>
$service
,
'provider_id'
=>
$request
->
provider_id
],
[
'token'
=>
'required|string'
,
'provider'
=>
'required|in:facebook,twitter,github,apple'
,
'provider_id'
=>
'required|string'
]);
if
(
$validator
->
fails
()){
return
Response
::
fail
(
''
,
500
,
$validator
->
errors
());
}
$socialUser
=
Socialite
::
driver
(
$service
)
->
userFromToken
(
$request
->
token
);
$user
=
User
::
query
()
->
where
(
'provider'
,
$service
)
->
where
(
'provider_id'
,
$socialUser
->
id
)
->
where
(
'state'
,
1
)
->
first
();
if
(
$user
==
null
){
// 如果该用户不存在则将其保存到 users 表
$newUser
=
new
User
();
$newUser
->
nickname
=
$socialUser
->
nickname
??
$socialUser
->
name
;
$newUser
->
email
=
$socialUser
->
email
??
''
;
$newUser
->
avatar
=
$socialUser
->
avatar
??
''
;
$newUser
->
password
=
''
;
$newUser
->
provider
=
$service
;
$newUser
->
provider_id
=
$socialUser
->
id
;
$newUser
->
save
();
$user
=
$newUser
;
// user_profile 保存
$userProfile
=
new
UserProfile
();
$userProfile
->
user_id
=
$user
->
id
;
$userProfile
->
unionid
=
$socialUser
->
unionid
??
''
;
$userProfile
->
save
();
}
$token
=
$user
->
createToken
(
$user
->
id
)
->
plainTextToken
;
$response
=
[
'token'
=>
$token
];
return
Response
::
success
(
$response
);
}
public
function
register
(
Request
$request
)
{
$validator
=
Validator
::
make
(
$request
->
all
(),
[
'email'
=>
'required|email|unique:users|max:255'
,
'password'
=>
'required'
,
'verify_code'
=>
'required'
]);
if
(
$validator
->
fails
()){
return
Response
::
fail
(
''
,
500
,
$validator
->
errors
());
}
try
{
$redis
=
Redis
::
connection
();
if
(
$request
->
verify_code
!=
'123123'
){
if
(
$redis
->
get
(
$request
->
email
)
!==
$request
->
verify_code
){
return
Response
::
fail
(
'verify code failed'
,
500
);
}
}
$data
=
$validator
->
validated
();
$data
[
'password'
]
=
bcrypt
(
$data
[
'password'
]);
$user
=
User
::
query
()
->
create
(
$data
);
UserProfile
::
query
()
->
create
([
'user_id'
=>
$user
->
id
]);
$token
=
$user
->
createToken
(
$user
->
email
)
->
plainTextToken
;
$response
=
[
'token'
=>
$token
];
return
Response
::
success
(
$response
);
}
catch
(
\Exception
$exception
){
return
Response
::
fail
(
'register failed'
,
500
,
$exception
->
getMessage
());
}
}
public
function
verify
(
Request
$request
)
{
$validator
=
Validator
::
make
(
$request
->
all
(),
[
'email'
=>
'required|email|max:255'
,
]);
if
(
$validator
->
fails
()){
return
Response
::
fail
(
''
,
500
,
$validator
->
errors
());
}
SendVerificationMessage
::
dispatch
(
$request
->
email
);
return
Response
::
success
([
'message'
=>
'Has been sent to your email: '
.
$request
->
email
],
'Has been sent to your email: '
.
$request
->
email
);
}
}
...
...
app/Http/Controllers/V1/UserController.php
View file @
7f525fa
...
...
@@ -3,24 +3,17 @@
namespace
App\Http\Controllers\V1
;
use
App\Http\Controllers\Controller
;
use
App\Jobs\SendVerificationMessage
;
use
App\Models\Immerse
;
use
App\Models\User
;
use
App\Models\UserProfile
;
use
Illuminate\Http\Request
;
use
Illuminate\Support\Facades\Auth
;
use
Illuminate\Support\Facades\File
;
use
Illuminate\Support\Facades\Hash
;
use
Illuminate\Support\Facades\Mail
;
use
Illuminate\Support\Facades\Redis
;
use
Illuminate\Support\Facades\Storage
;
use
Illuminate\Support\Facades\Validator
;
use
Jiannei\Response\Laravel\Support\Facades\Response
;
class
UserController
extends
Controller
{
//
public
function
login
(
Request
$request
)
{
$validator
=
Validator
::
make
(
$request
->
all
(),
[
...
...
@@ -50,59 +43,6 @@ class UserController extends Controller
}
public
function
register
(
Request
$request
)
{
$validator
=
Validator
::
make
(
$request
->
all
(),
[
'email'
=>
'required|email|unique:users|max:255'
,
'password'
=>
'required'
,
'verify_code'
=>
'required'
]);
if
(
$validator
->
fails
()){
return
Response
::
fail
(
''
,
500
,
$validator
->
errors
());
}
try
{
$redis
=
Redis
::
connection
();
if
(
$request
->
verify_code
!=
'123123'
){
if
(
$redis
->
get
(
$request
->
email
)
!==
$request
->
verify_code
){
return
Response
::
fail
(
'verify code failed'
,
500
);
}
}
$data
=
$validator
->
validated
();
$data
[
'password'
]
=
bcrypt
(
$data
[
'password'
]);
$user
=
User
::
query
()
->
create
(
$data
);
UserProfile
::
query
()
->
create
([
'user_id'
=>
$user
->
id
]);
$token
=
$user
->
createToken
(
$user
->
email
)
->
plainTextToken
;
$response
=
[
'token'
=>
$token
];
return
Response
::
success
(
$response
);
}
catch
(
\Exception
$exception
){
return
Response
::
fail
(
'register failed'
,
500
,
$exception
->
getMessage
());
}
}
public
function
verify
(
Request
$request
)
{
$validator
=
Validator
::
make
(
$request
->
all
(),
[
'email'
=>
'required|email|max:255'
,
]);
if
(
$validator
->
fails
()){
return
Response
::
fail
(
''
,
500
,
$validator
->
errors
());
}
SendVerificationMessage
::
dispatch
(
$request
->
email
);
return
Response
::
success
([
'message'
=>
'Has been sent to your email: '
.
$request
->
email
],
'Has been sent to your email: '
.
$request
->
email
);
}
public
function
avatar
(
Request
$request
)
{
$validator
=
Validator
::
make
(
$request
->
all
(),
[
...
...
@@ -184,4 +124,48 @@ class UserController extends Controller
return
Response
::
success
([
'delete'
=>
true
]);
}
public
function
update
(
Request
$request
,
$id
)
{
$validator
=
Validator
::
make
(
$request
->
all
(),
[
'avatar'
=>
'required|string'
,
'email'
=>
'required|string'
,
'nickname'
=>
'required|string'
,
'gender'
=>
'sometimes|integer'
,
]);
if
(
$validator
->
fails
()){
return
Response
::
fail
(
''
,
500
,
$validator
->
errors
());
}
try
{
$user
=
User
::
query
()
->
find
(
$id
);
if
(
$user
->
id
!=
$request
->
user
()
->
id
)
return
Response
::
fail
(
'不可修改他人信息'
,
500
);
$user
->
email
=
$request
->
email
;
$user
->
avatar
=
$request
->
avatar
;
$user
->
nickname
=
$request
->
nickname
;
$user
->
gender
=
$request
->
gender
??
0
;
$user
->
save
();
}
catch
(
\Exception
$exception
){
return
Response
::
fail
(
''
,
500
,
$exception
->
getMessage
());
}
return
Response
::
success
([
'avatar'
=>
$user
->
avatar
]);
}
public
function
destroy
(
$id
,
Request
$request
)
{
$user
=
User
::
query
()
->
find
(
$id
);
if
(
$user
->
id
!=
$request
->
user
()
->
id
)
return
Response
::
fail
(
'不可注销他人信息'
,
500
);
$user
->
state
=
0
;
$user
->
save
();
return
Response
::
success
([
'destroy'
=>
true
]);
}
}
...
...
routes/api.php
View file @
7f525fa
...
...
@@ -17,10 +17,12 @@ use Illuminate\Routing\Router;
Route
::
prefix
(
'v1'
)
->
namespace
(
'App\Http\Controllers\V1'
)
->
group
(
function
(
Router
$api
){
/** 用户账密登录*/
$api
->
post
(
'/login'
,
'UserController@login'
);
$api
->
post
(
'/register'
,
'UserController@register'
);
/** 用户注册*/
$api
->
post
(
'/register'
,
'AuthController@register'
);
/** 发送验证码 */
$api
->
get
(
'/verify'
,
'
User
Controller@verify'
);
$api
->
get
(
'/verify'
,
'
Auth
Controller@verify'
);
/** 社会化用户登录*/
$api
->
any
(
'auth/{service}/callback'
,
'AuthController@apiHandleProviderCallback'
);
...
...
@@ -53,6 +55,12 @@ Route::prefix('v1')->namespace('App\Http\Controllers\V1')->middleware('auth:sanc
/** 用户信息*/
$api
->
get
(
'/user'
,
'UserController@user'
);
/** 用户信息修改*/
$api
->
put
(
'/user/{id}'
,
'UserController@update'
);
/** 用户注销*/
$api
->
delete
(
'/user/{id}'
,
'UserController@destroy'
);
/** 我的作品 */
$api
->
get
(
'/my/videos'
,
'UserController@videos'
);
...
...
Please
register
or
login
to post a comment