Showing
4 changed files
with
145 additions
and
59 deletions
... | @@ -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 | ... | ... |
-
Please register or login to post a comment