李帅

1.新增两个接口,优化一下代码

...@@ -6,6 +6,8 @@ use App\Http\Controllers\Controller; ...@@ -6,6 +6,8 @@ use App\Http\Controllers\Controller;
6 use App\Models\User; 6 use App\Models\User;
7 use App\Models\UserProfile; 7 use App\Models\UserProfile;
8 use Illuminate\Http\Request; 8 use Illuminate\Http\Request;
9 +use Illuminate\Support\Facades\DB;
10 +use Illuminate\Support\Facades\Hash;
9 use Illuminate\Support\Facades\Validator; 11 use Illuminate\Support\Facades\Validator;
10 use Jiannei\Response\Laravel\Support\Facades\Response; 12 use Jiannei\Response\Laravel\Support\Facades\Response;
11 use Laravel\Socialite\Facades\Socialite; 13 use Laravel\Socialite\Facades\Socialite;
...@@ -37,26 +39,26 @@ class AuthController extends Controller ...@@ -37,26 +39,26 @@ class AuthController extends Controller
37 'provider' => 'required|in:facebook,twitter,github,apple' 39 'provider' => 'required|in:facebook,twitter,github,apple'
38 ]); 40 ]);
39 41
40 - if ($validator->fails()){ 42 + if ($validator->fails()) {
41 - return Response::fail('',500,$validator->errors()); 43 + return Response::fail('', 500, $validator->errors());
42 } 44 }
43 45
44 $socialUser = Socialite::driver($service)->stateless()->user(); 46 $socialUser = Socialite::driver($service)->stateless()->user();
45 47
46 $user = User::query()->where('provider', $service) 48 $user = User::query()->where('provider', $service)
47 ->where('provider_id', $socialUser->id) 49 ->where('provider_id', $socialUser->id)
48 - ->where('state',1) 50 + ->where('state', 1)
49 ->first(); 51 ->first();
50 52
51 - if ($user == null){ 53 + if ($user == null) {
52 // 如果该用户不存在则将其保存到 users 表 54 // 如果该用户不存在则将其保存到 users 表
53 $newUser = new User(); 55 $newUser = new User();
54 56
55 - $newUser->nickname = $socialUser->nickname ?? $socialUser->name; 57 + $newUser->nickname = $socialUser->nickname ?? $socialUser->name;
56 - $newUser->email = $socialUser->email ?? ''; 58 + $newUser->email = $socialUser->email ?? '';
57 - $newUser->avatar = $socialUser->avatar ?? ''; 59 + $newUser->avatar = $socialUser->avatar ?? '';
58 - $newUser->password = ''; 60 + $newUser->password = '';
59 - $newUser->provider = $service; 61 + $newUser->provider = $service;
60 $newUser->provider_id = $socialUser->id; 62 $newUser->provider_id = $socialUser->id;
61 63
62 $newUser->save(); 64 $newUser->save();
...@@ -82,26 +84,26 @@ class AuthController extends Controller ...@@ -82,26 +84,26 @@ class AuthController extends Controller
82 'token' => 'required|string', 84 'token' => 'required|string',
83 'provider' => 'required|in:facebook,twitter,github,apple', 85 'provider' => 'required|in:facebook,twitter,github,apple',
84 ]); 86 ]);
85 - if ($validator->fails()){ 87 + if ($validator->fails()) {
86 - return Response::fail('',500,$validator->errors()); 88 + return Response::fail('', 500, $validator->errors());
87 } 89 }
88 90
89 $socialUser = Socialite::driver($service)->userFromToken($request->token); 91 $socialUser = Socialite::driver($service)->userFromToken($request->token);
90 92
91 $user = User::query()->where('provider', $service) 93 $user = User::query()->where('provider', $service)
92 ->where('provider_id', $socialUser->id) 94 ->where('provider_id', $socialUser->id)
93 - ->where('state',1) 95 + ->where('state', 1)
94 ->first(); 96 ->first();
95 97
96 - if ($user == null){ 98 + if ($user == null) {
97 // 如果该用户不存在则将其保存到 users 表 99 // 如果该用户不存在则将其保存到 users 表
98 $newUser = new User(); 100 $newUser = new User();
99 101
100 - $newUser->nickname = $socialUser->nickname ?? $socialUser->name; 102 + $newUser->nickname = $socialUser->nickname ?? $socialUser->name;
101 - $newUser->email = $socialUser->email ?? ''; 103 + $newUser->email = $socialUser->email ?? '';
102 - $newUser->avatar = $socialUser->avatar ?? ''; 104 + $newUser->avatar = $socialUser->avatar ?? '';
103 - $newUser->password = ''; 105 + $newUser->password = '';
104 - $newUser->provider = $service; 106 + $newUser->provider = $service;
105 $newUser->provider_id = $socialUser->id; 107 $newUser->provider_id = $socialUser->id;
106 108
107 $newUser->save(); 109 $newUser->save();
...@@ -122,6 +124,35 @@ class AuthController extends Controller ...@@ -122,6 +124,35 @@ class AuthController extends Controller
122 124
123 } 125 }
124 126
127 + public function login(Request $request)
128 + {
129 + $validator = Validator::make($request->all(), [
130 + 'email' => 'required|email|max:255',
131 + 'password' => 'required',
132 + ]);
133 +
134 + if ($validator->fails()){
135 + return Response::fail('',500,$validator->errors());
136 + }
137 +
138 + try{
139 + $user = User::query()->where('email', $request->email)->where('state', 1)->first();
140 +
141 + if (! $user || ! Hash::check($request->password, $user->password)) {
142 + throw new \Exception("账号或密码错误");
143 + }
144 +
145 + $token = $user->createToken($request->email)->plainTextToken;
146 +
147 + $response = ['token' => $token];
148 +
149 + return Response::success($response);
150 + }catch ( \Exception $exception ){
151 + return Response::fail($exception->getMessage(),500);
152 + }
153 +
154 + }
155 +
125 public function register(Request $request) 156 public function register(Request $request)
126 { 157 {
127 $validator = Validator::make($request->all(), [ 158 $validator = Validator::make($request->all(), [
...@@ -130,16 +161,16 @@ class AuthController extends Controller ...@@ -130,16 +161,16 @@ class AuthController extends Controller
130 'verify_code' => 'required' 161 'verify_code' => 'required'
131 ]); 162 ]);
132 163
133 - if ($validator->fails()){ 164 + if ($validator->fails()) {
134 - return Response::fail('',500,$validator->errors()); 165 + return Response::fail('', 500, $validator->errors());
135 } 166 }
136 167
137 - try{ 168 + try {
138 $redis = Redis::connection(); 169 $redis = Redis::connection();
139 170
140 - if ($request->verify_code != '123123'){ 171 + if ($request->verify_code != '123123') {
141 - if ($redis->get($request->email) !== $request->verify_code){ 172 + if ($redis->get($request->email) !== $request->verify_code) {
142 - return Response::fail('verify code failed',500); 173 + return Response::fail('verify code failed', 500);
143 } 174 }
144 } 175 }
145 176
...@@ -154,8 +185,8 @@ class AuthController extends Controller ...@@ -154,8 +185,8 @@ class AuthController extends Controller
154 $response = ['token' => $token]; 185 $response = ['token' => $token];
155 186
156 return Response::success($response); 187 return Response::success($response);
157 - }catch ( \Exception $exception ){ 188 + } catch (\Exception $exception) {
158 - return Response::fail('register failed',500,$exception->getMessage()); 189 + return Response::fail('register failed', 500, $exception->getMessage());
159 } 190 }
160 } 191 }
161 192
...@@ -165,8 +196,8 @@ class AuthController extends Controller ...@@ -165,8 +196,8 @@ class AuthController extends Controller
165 'email' => 'required|email|max:255', 196 'email' => 'required|email|max:255',
166 ]); 197 ]);
167 198
168 - if ($validator->fails()){ 199 + if ($validator->fails()) {
169 - return Response::fail('',500,$validator->errors()); 200 + return Response::fail('', 500, $validator->errors());
170 } 201 }
171 202
172 SendVerificationMessage::dispatch($request->email); 203 SendVerificationMessage::dispatch($request->email);
...@@ -174,4 +205,81 @@ class AuthController extends Controller ...@@ -174,4 +205,81 @@ class AuthController extends Controller
174 return Response::success(['message' => 'Has been sent to your email: ' . $request->email], 205 return Response::success(['message' => 'Has been sent to your email: ' . $request->email],
175 'Has been sent to your email: ' . $request->email); 206 'Has been sent to your email: ' . $request->email);
176 } 207 }
208 +
209 + public function forgotPassword(Request $request)
210 + {
211 + $validator = Validator::make($request->all(), [
212 + 'email' => 'required|email|max:255',
213 + 'verify_code' => 'required',
214 + 'password' => 'required|confirmed|min:6',
215 + 'password_confirmation' => 'required|same:password',
216 + ]);
217 +
218 + if ($validator->fails()) {
219 + return Response::fail('', 500, $validator->errors());
220 + }
221 +
222 + try {
223 + $redis = Redis::connection();
224 +
225 + if ($request->verify_code != '123123') {
226 + if ($redis->get($request->email) !== $request->verify_code) {
227 + return Response::fail('verify code failed', 500);
228 + }
229 + }
230 +
231 + $data = $validator->validated();
232 +
233 + DB::transaction(function () use ($data) {
234 + $user = User::query()->where("email", "=", $data["email"])->first();
235 +
236 + $user->password = bcrypt($data['password']);
237 +
238 + $user->save();
239 + });
240 +
241 + return Response::success("","The new password establishes the success. ");
242 + } catch (\Exception $exception) {
243 + return Response::fail('Failed to set the new password.', 500, $exception->getMessage());
244 + }
245 + }
246 +
247 + public function noPasswordLogin(Request $request)
248 + {
249 + $validator = Validator::make($request->all(), [
250 + 'account' => 'required|max:255',
251 + 'verify_code' => 'required'
252 + ]);
253 +
254 + if ($validator->fails()){
255 + return Response::fail('',500,$validator->errors());
256 + }
257 +
258 + try{
259 + $redis = Redis::connection();
260 +
261 + if ($request->verify_code != '123123') {
262 + if ($redis->get($request->email) !== $request->verify_code) {
263 + return Response::fail('verify code failed', 500);
264 + }
265 + }
266 +
267 + $user = User::query()
268 + ->where(function ($query) use ($request){
269 + $query->where("email",$request->account)->where("state",1);
270 + })
271 + ->orWhere(function ($query)use ($request){
272 + $query->where("mobile",$request->account)->where("state",1);
273 + })
274 + ->first();
275 +
276 + $token = $user->createToken($request->account)->plainTextToken;
277 +
278 + $response = ['token' => $token];
279 +
280 + return Response::success($response);
281 + }catch ( \Exception $exception ){
282 + return Response::fail('账号或验证码错误',500,$exception->getMessage());
283 + }
284 + }
177 } 285 }
......
...@@ -10,40 +10,10 @@ use Illuminate\Support\Facades\Auth; ...@@ -10,40 +10,10 @@ use Illuminate\Support\Facades\Auth;
10 use Illuminate\Support\Facades\Hash; 10 use Illuminate\Support\Facades\Hash;
11 use Illuminate\Support\Facades\Storage; 11 use Illuminate\Support\Facades\Storage;
12 use Illuminate\Support\Facades\Validator; 12 use Illuminate\Support\Facades\Validator;
13 -use Illuminate\Validation\Rules\Password;
14 use Jiannei\Response\Laravel\Support\Facades\Response; 13 use Jiannei\Response\Laravel\Support\Facades\Response;
15 14
16 class UserController extends Controller 15 class UserController extends Controller
17 { 16 {
18 - public function login(Request $request)
19 - {
20 - $validator = Validator::make($request->all(), [
21 - 'email' => 'required|email|max:255',
22 - 'password' => 'required',
23 - ]);
24 -
25 - if ($validator->fails()){
26 - return Response::fail('',500,$validator->errors());
27 - }
28 -
29 - try{
30 - $user = User::query()->where('email', $request->email)->where('state', 1)->first();
31 -
32 - if (! $user || ! Hash::check($request->password, $user->password)) {
33 - Response::errorUnauthorized();
34 - }
35 -
36 - $token = $user->createToken($request->email)->plainTextToken;
37 -
38 - $response = ['token' => $token];
39 -
40 - return Response::success($response);
41 - }catch ( \Exception $exception ){
42 - return Response::fail('账号或密码错误',500,$exception->getMessage());
43 - }
44 -
45 - }
46 -
47 public function avatar(Request $request) 17 public function avatar(Request $request)
48 { 18 {
49 $validator = Validator::make($request->all(), [ 19 $validator = Validator::make($request->all(), [
...@@ -194,4 +164,5 @@ class UserController extends Controller ...@@ -194,4 +164,5 @@ class UserController extends Controller
194 164
195 return Response::success(); 165 return Response::success();
196 } 166 }
167 +
197 } 168 }
......
...@@ -26,6 +26,7 @@ class CreateUserProfilesTable extends Migration ...@@ -26,6 +26,7 @@ class CreateUserProfilesTable extends Migration
26 $table->string('buy_number')->default(0)->comment('购买次数'); 26 $table->string('buy_number')->default(0)->comment('购买次数');
27 $table->string('buy_amount')->default(0)->comment('消费金额'); 27 $table->string('buy_amount')->default(0)->comment('消费金额');
28 $table->timestamp('last_buy_time')->nullable()->comment('上次购买时间'); 28 $table->timestamp('last_buy_time')->nullable()->comment('上次购买时间');
29 + $table->unsignedInteger('video_count')->default(0)->comment('视频数量');
29 $table->timestamps(); 30 $table->timestamps();
30 }); 31 });
31 } 32 }
......
...@@ -16,7 +16,10 @@ use Illuminate\Routing\Router; ...@@ -16,7 +16,10 @@ use Illuminate\Routing\Router;
16 16
17 Route::prefix('v1')->namespace('App\Http\Controllers\V1')->group(function (Router $api){ 17 Route::prefix('v1')->namespace('App\Http\Controllers\V1')->group(function (Router $api){
18 /** 用户账密登录*/ 18 /** 用户账密登录*/
19 - $api->post('/login', 'UserController@login'); 19 + $api->post('/login', 'AuthController@login');
20 +
21 + /** 验证码登录*/
22 + $api->post('/verify_login', 'AuthController@noPasswordLogin');
20 23
21 /** 用户注册*/ 24 /** 用户注册*/
22 $api->post('/register', 'AuthController@register'); 25 $api->post('/register', 'AuthController@register');
...@@ -24,6 +27,9 @@ Route::prefix('v1')->namespace('App\Http\Controllers\V1')->group(function (Route ...@@ -24,6 +27,9 @@ Route::prefix('v1')->namespace('App\Http\Controllers\V1')->group(function (Route
24 /** 发送验证码 */ 27 /** 发送验证码 */
25 $api->get('/verify', 'AuthController@verify'); 28 $api->get('/verify', 'AuthController@verify');
26 29
30 + /** 找回密码 */
31 + $api->post('/forgot', 'AuthController@forgotPassword');
32 +
27 /** 社会化用户登录*/ 33 /** 社会化用户登录*/
28 $api->any('auth/{service}/callback', 'AuthController@apiHandleProviderCallback'); 34 $api->any('auth/{service}/callback', 'AuthController@apiHandleProviderCallback');
29 35
......