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
李帅
2023-02-23 15:30:15 +0800
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
39bb919016cba88a8eba77f12ad566082f1c8eac
39bb9190
1 parent
a99d73f7
1.新增两个接口,优化一下代码
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
145 additions
and
59 deletions
app/Http/Controllers/V1/AuthController.php
app/Http/Controllers/V1/UserController.php
database/migrations/2022_02_08_153922_create_user_profiles_table.php
routes/api.php
app/Http/Controllers/V1/AuthController.php
View file @
39bb919
...
...
@@ -6,6 +6,8 @@ use App\Http\Controllers\Controller;
use
App\Models\User
;
use
App\Models\UserProfile
;
use
Illuminate\Http\Request
;
use
Illuminate\Support\Facades\DB
;
use
Illuminate\Support\Facades\Hash
;
use
Illuminate\Support\Facades\Validator
;
use
Jiannei\Response\Laravel\Support\Facades\Response
;
use
Laravel\Socialite\Facades\Socialite
;
...
...
@@ -37,26 +39,26 @@ class AuthController extends Controller
'provider'
=>
'required|in:facebook,twitter,github,apple'
]);
if
(
$validator
->
fails
()){
return
Response
::
fail
(
''
,
500
,
$validator
->
errors
());
if
(
$validator
->
fails
())
{
return
Response
::
fail
(
''
,
500
,
$validator
->
errors
());
}
$socialUser
=
Socialite
::
driver
(
$service
)
->
stateless
()
->
user
();
$user
=
User
::
query
()
->
where
(
'provider'
,
$service
)
->
where
(
'provider_id'
,
$socialUser
->
id
)
->
where
(
'state'
,
1
)
->
where
(
'state'
,
1
)
->
first
();
if
(
$user
==
null
){
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
->
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
();
...
...
@@ -82,26 +84,26 @@ class AuthController extends Controller
'token'
=>
'required|string'
,
'provider'
=>
'required|in:facebook,twitter,github,apple'
,
]);
if
(
$validator
->
fails
()){
return
Response
::
fail
(
''
,
500
,
$validator
->
errors
());
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
)
->
where
(
'state'
,
1
)
->
first
();
if
(
$user
==
null
){
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
->
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
();
...
...
@@ -122,6 +124,35 @@ class AuthController extends Controller
}
public
function
login
(
Request
$request
)
{
$validator
=
Validator
::
make
(
$request
->
all
(),
[
'email'
=>
'required|email|max:255'
,
'password'
=>
'required'
,
]);
if
(
$validator
->
fails
()){
return
Response
::
fail
(
''
,
500
,
$validator
->
errors
());
}
try
{
$user
=
User
::
query
()
->
where
(
'email'
,
$request
->
email
)
->
where
(
'state'
,
1
)
->
first
();
if
(
!
$user
||
!
Hash
::
check
(
$request
->
password
,
$user
->
password
))
{
throw
new
\Exception
(
"账号或密码错误"
);
}
$token
=
$user
->
createToken
(
$request
->
email
)
->
plainTextToken
;
$response
=
[
'token'
=>
$token
];
return
Response
::
success
(
$response
);
}
catch
(
\Exception
$exception
){
return
Response
::
fail
(
$exception
->
getMessage
(),
500
);
}
}
public
function
register
(
Request
$request
)
{
$validator
=
Validator
::
make
(
$request
->
all
(),
[
...
...
@@ -130,16 +161,16 @@ class AuthController extends Controller
'verify_code'
=>
'required'
]);
if
(
$validator
->
fails
()){
return
Response
::
fail
(
''
,
500
,
$validator
->
errors
());
if
(
$validator
->
fails
())
{
return
Response
::
fail
(
''
,
500
,
$validator
->
errors
());
}
try
{
try
{
$redis
=
Redis
::
connection
();
if
(
$request
->
verify_code
!=
'123123'
){
if
(
$redis
->
get
(
$request
->
email
)
!==
$request
->
verify_code
){
return
Response
::
fail
(
'verify code failed'
,
500
);
if
(
$request
->
verify_code
!=
'123123'
)
{
if
(
$redis
->
get
(
$request
->
email
)
!==
$request
->
verify_code
)
{
return
Response
::
fail
(
'verify code failed'
,
500
);
}
}
...
...
@@ -154,8 +185,8 @@ class AuthController extends Controller
$response
=
[
'token'
=>
$token
];
return
Response
::
success
(
$response
);
}
catch
(
\Exception
$exception
)
{
return
Response
::
fail
(
'register failed'
,
500
,
$exception
->
getMessage
());
}
catch
(
\Exception
$exception
)
{
return
Response
::
fail
(
'register failed'
,
500
,
$exception
->
getMessage
());
}
}
...
...
@@ -165,8 +196,8 @@ class AuthController extends Controller
'email'
=>
'required|email|max:255'
,
]);
if
(
$validator
->
fails
()){
return
Response
::
fail
(
''
,
500
,
$validator
->
errors
());
if
(
$validator
->
fails
())
{
return
Response
::
fail
(
''
,
500
,
$validator
->
errors
());
}
SendVerificationMessage
::
dispatch
(
$request
->
email
);
...
...
@@ -174,4 +205,81 @@ class AuthController extends Controller
return
Response
::
success
([
'message'
=>
'Has been sent to your email: '
.
$request
->
email
],
'Has been sent to your email: '
.
$request
->
email
);
}
public
function
forgotPassword
(
Request
$request
)
{
$validator
=
Validator
::
make
(
$request
->
all
(),
[
'email'
=>
'required|email|max:255'
,
'verify_code'
=>
'required'
,
'password'
=>
'required|confirmed|min:6'
,
'password_confirmation'
=>
'required|same:password'
,
]);
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
();
DB
::
transaction
(
function
()
use
(
$data
)
{
$user
=
User
::
query
()
->
where
(
"email"
,
"="
,
$data
[
"email"
])
->
first
();
$user
->
password
=
bcrypt
(
$data
[
'password'
]);
$user
->
save
();
});
return
Response
::
success
(
""
,
"The new password establishes the success. "
);
}
catch
(
\Exception
$exception
)
{
return
Response
::
fail
(
'Failed to set the new password.'
,
500
,
$exception
->
getMessage
());
}
}
public
function
noPasswordLogin
(
Request
$request
)
{
$validator
=
Validator
::
make
(
$request
->
all
(),
[
'account'
=>
'required|max:255'
,
'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
);
}
}
$user
=
User
::
query
()
->
where
(
function
(
$query
)
use
(
$request
){
$query
->
where
(
"email"
,
$request
->
account
)
->
where
(
"state"
,
1
);
})
->
orWhere
(
function
(
$query
)
use
(
$request
){
$query
->
where
(
"mobile"
,
$request
->
account
)
->
where
(
"state"
,
1
);
})
->
first
();
$token
=
$user
->
createToken
(
$request
->
account
)
->
plainTextToken
;
$response
=
[
'token'
=>
$token
];
return
Response
::
success
(
$response
);
}
catch
(
\Exception
$exception
){
return
Response
::
fail
(
'账号或验证码错误'
,
500
,
$exception
->
getMessage
());
}
}
}
...
...
app/Http/Controllers/V1/UserController.php
View file @
39bb919
...
...
@@ -10,40 +10,10 @@ use Illuminate\Support\Facades\Auth;
use
Illuminate\Support\Facades\Hash
;
use
Illuminate\Support\Facades\Storage
;
use
Illuminate\Support\Facades\Validator
;
use
Illuminate\Validation\Rules\Password
;
use
Jiannei\Response\Laravel\Support\Facades\Response
;
class
UserController
extends
Controller
{
public
function
login
(
Request
$request
)
{
$validator
=
Validator
::
make
(
$request
->
all
(),
[
'email'
=>
'required|email|max:255'
,
'password'
=>
'required'
,
]);
if
(
$validator
->
fails
()){
return
Response
::
fail
(
''
,
500
,
$validator
->
errors
());
}
try
{
$user
=
User
::
query
()
->
where
(
'email'
,
$request
->
email
)
->
where
(
'state'
,
1
)
->
first
();
if
(
!
$user
||
!
Hash
::
check
(
$request
->
password
,
$user
->
password
))
{
Response
::
errorUnauthorized
();
}
$token
=
$user
->
createToken
(
$request
->
email
)
->
plainTextToken
;
$response
=
[
'token'
=>
$token
];
return
Response
::
success
(
$response
);
}
catch
(
\Exception
$exception
){
return
Response
::
fail
(
'账号或密码错误'
,
500
,
$exception
->
getMessage
());
}
}
public
function
avatar
(
Request
$request
)
{
$validator
=
Validator
::
make
(
$request
->
all
(),
[
...
...
@@ -194,4 +164,5 @@ class UserController extends Controller
return
Response
::
success
();
}
}
...
...
database/migrations/2022_02_08_153922_create_user_profiles_table.php
View file @
39bb919
...
...
@@ -26,6 +26,7 @@ class CreateUserProfilesTable extends Migration
$table
->
string
(
'buy_number'
)
->
default
(
0
)
->
comment
(
'购买次数'
);
$table
->
string
(
'buy_amount'
)
->
default
(
0
)
->
comment
(
'消费金额'
);
$table
->
timestamp
(
'last_buy_time'
)
->
nullable
()
->
comment
(
'上次购买时间'
);
$table
->
unsignedInteger
(
'video_count'
)
->
default
(
0
)
->
comment
(
'视频数量'
);
$table
->
timestamps
();
});
}
...
...
routes/api.php
View file @
39bb919
...
...
@@ -16,7 +16,10 @@ use Illuminate\Routing\Router;
Route
::
prefix
(
'v1'
)
->
namespace
(
'App\Http\Controllers\V1'
)
->
group
(
function
(
Router
$api
){
/** 用户账密登录*/
$api
->
post
(
'/login'
,
'UserController@login'
);
$api
->
post
(
'/login'
,
'AuthController@login'
);
/** 验证码登录*/
$api
->
post
(
'/verify_login'
,
'AuthController@noPasswordLogin'
);
/** 用户注册*/
$api
->
post
(
'/register'
,
'AuthController@register'
);
...
...
@@ -24,6 +27,9 @@ Route::prefix('v1')->namespace('App\Http\Controllers\V1')->group(function (Route
/** 发送验证码 */
$api
->
get
(
'/verify'
,
'AuthController@verify'
);
/** 找回密码 */
$api
->
post
(
'/forgot'
,
'AuthController@forgotPassword'
);
/** 社会化用户登录*/
$api
->
any
(
'auth/{service}/callback'
,
'AuthController@apiHandleProviderCallback'
);
...
...
Please
register
or
login
to post a comment