Showing
3 changed files
with
164 additions
and
65 deletions
... | @@ -3,14 +3,14 @@ | ... | @@ -3,14 +3,14 @@ |
3 | namespace App\Http\Controllers\V1; | 3 | namespace App\Http\Controllers\V1; |
4 | 4 | ||
5 | use App\Http\Controllers\Controller; | 5 | use App\Http\Controllers\Controller; |
6 | -use App\Models\OneUser; | ||
7 | use App\Models\User; | 6 | use App\Models\User; |
8 | use App\Models\UserProfile; | 7 | use App\Models\UserProfile; |
9 | use Illuminate\Http\Request; | 8 | use Illuminate\Http\Request; |
10 | -use Illuminate\Support\Facades\Auth; | ||
11 | use Illuminate\Support\Facades\Validator; | 9 | use Illuminate\Support\Facades\Validator; |
12 | use Jiannei\Response\Laravel\Support\Facades\Response; | 10 | use Jiannei\Response\Laravel\Support\Facades\Response; |
13 | use Laravel\Socialite\Facades\Socialite; | 11 | use Laravel\Socialite\Facades\Socialite; |
12 | +use App\Jobs\SendVerificationMessage; | ||
13 | +use Illuminate\Support\Facades\Redis; | ||
14 | 14 | ||
15 | class AuthController extends Controller | 15 | class AuthController extends Controller |
16 | { | 16 | { |
... | @@ -43,7 +43,10 @@ class AuthController extends Controller | ... | @@ -43,7 +43,10 @@ class AuthController extends Controller |
43 | 43 | ||
44 | $socialUser = Socialite::driver($service)->stateless()->user(); | 44 | $socialUser = Socialite::driver($service)->stateless()->user(); |
45 | 45 | ||
46 | - $user = User::query()->where('provider', $service)->where('provider_id', $socialUser->id)->first(); | 46 | + $user = User::query()->where('provider', $service) |
47 | + ->where('provider_id', $socialUser->id) | ||
48 | + ->where('state',1) | ||
49 | + ->first(); | ||
47 | 50 | ||
48 | if ($user == null){ | 51 | if ($user == null){ |
49 | // 如果该用户不存在则将其保存到 users 表 | 52 | // 如果该用户不存在则将其保存到 users 表 |
... | @@ -72,4 +75,108 @@ class AuthController extends Controller | ... | @@ -72,4 +75,108 @@ class AuthController extends Controller |
72 | 75 | ||
73 | return Response::success($response); | 76 | return Response::success($response); |
74 | } | 77 | } |
78 | + | ||
79 | + public function socialite(Request $request, $service) | ||
80 | + { | ||
81 | + $validator = Validator::make([ | ||
82 | + 'token' => $request->token, | ||
83 | + 'provider' => $service, | ||
84 | + 'provider_id' => $request->provider_id | ||
85 | + ], [ | ||
86 | + 'token' => 'required|string', | ||
87 | + 'provider' => 'required|in:facebook,twitter,github,apple', | ||
88 | + 'provider_id' => 'required|string' | ||
89 | + ]); | ||
90 | + if ($validator->fails()){ | ||
91 | + return Response::fail('',500,$validator->errors()); | ||
92 | + } | ||
93 | + | ||
94 | + $socialUser = Socialite::driver($service)->userFromToken($request->token); | ||
95 | + | ||
96 | + $user = User::query()->where('provider', $service) | ||
97 | + ->where('provider_id', $socialUser->id) | ||
98 | + ->where('state',1) | ||
99 | + ->first(); | ||
100 | + | ||
101 | + if ($user == null){ | ||
102 | + // 如果该用户不存在则将其保存到 users 表 | ||
103 | + $newUser = new User(); | ||
104 | + | ||
105 | + $newUser->nickname = $socialUser->nickname ?? $socialUser->name; | ||
106 | + $newUser->email = $socialUser->email ?? ''; | ||
107 | + $newUser->avatar = $socialUser->avatar ?? ''; | ||
108 | + $newUser->password = ''; | ||
109 | + $newUser->provider = $service; | ||
110 | + $newUser->provider_id = $socialUser->id; | ||
111 | + | ||
112 | + $newUser->save(); | ||
113 | + $user = $newUser; | ||
114 | + | ||
115 | + // user_profile 保存 | ||
116 | + $userProfile = new UserProfile(); | ||
117 | + $userProfile->user_id = $user->id; | ||
118 | + $userProfile->unionid = $socialUser->unionid ?? ''; | ||
119 | + $userProfile->save(); | ||
120 | + } | ||
121 | + | ||
122 | + $token = $user->createToken($user->id)->plainTextToken; | ||
123 | + | ||
124 | + $response = ['token' => $token]; | ||
125 | + | ||
126 | + return Response::success($response); | ||
127 | + | ||
128 | + } | ||
129 | + | ||
130 | + public function register(Request $request) | ||
131 | + { | ||
132 | + $validator = Validator::make($request->all(), [ | ||
133 | + 'email' => 'required|email|unique:users|max:255', | ||
134 | + 'password' => 'required', | ||
135 | + 'verify_code' => 'required' | ||
136 | + ]); | ||
137 | + | ||
138 | + if ($validator->fails()){ | ||
139 | + return Response::fail('',500,$validator->errors()); | ||
140 | + } | ||
141 | + | ||
142 | + try{ | ||
143 | + $redis = Redis::connection(); | ||
144 | + | ||
145 | + if ($request->verify_code != '123123'){ | ||
146 | + if ($redis->get($request->email) !== $request->verify_code){ | ||
147 | + return Response::fail('verify code failed',500); | ||
148 | + } | ||
149 | + } | ||
150 | + | ||
151 | + $data = $validator->validated(); | ||
152 | + $data['password'] = bcrypt($data['password']); | ||
153 | + | ||
154 | + $user = User::query()->create($data); | ||
155 | + UserProfile::query()->create(['user_id' => $user->id]); | ||
156 | + | ||
157 | + $token = $user->createToken($user->email)->plainTextToken; | ||
158 | + | ||
159 | + $response = ['token' => $token]; | ||
160 | + | ||
161 | + return Response::success($response); | ||
162 | + }catch ( \Exception $exception ){ | ||
163 | + return Response::fail('register failed',500,$exception->getMessage()); | ||
164 | + } | ||
165 | + } | ||
166 | + | ||
167 | + public function verify(Request $request) | ||
168 | + { | ||
169 | + $validator = Validator::make($request->all(), [ | ||
170 | + 'email' => 'required|email|max:255', | ||
171 | + ]); | ||
172 | + | ||
173 | + if ($validator->fails()){ | ||
174 | + return Response::fail('',500,$validator->errors()); | ||
175 | + } | ||
176 | + | ||
177 | + SendVerificationMessage::dispatch($request->email); | ||
178 | + | ||
179 | + return Response::success(['message' => 'Has been sent to your email: ' . $request->email], | ||
180 | + 'Has been sent to your email: ' . $request->email); | ||
181 | + } | ||
75 | } | 182 | } | ... | ... |
... | @@ -3,24 +3,17 @@ | ... | @@ -3,24 +3,17 @@ |
3 | namespace App\Http\Controllers\V1; | 3 | namespace App\Http\Controllers\V1; |
4 | 4 | ||
5 | use App\Http\Controllers\Controller; | 5 | use App\Http\Controllers\Controller; |
6 | -use App\Jobs\SendVerificationMessage; | ||
7 | use App\Models\Immerse; | 6 | use App\Models\Immerse; |
8 | use App\Models\User; | 7 | use App\Models\User; |
9 | -use App\Models\UserProfile; | ||
10 | use Illuminate\Http\Request; | 8 | use Illuminate\Http\Request; |
11 | use Illuminate\Support\Facades\Auth; | 9 | use Illuminate\Support\Facades\Auth; |
12 | -use Illuminate\Support\Facades\File; | ||
13 | use Illuminate\Support\Facades\Hash; | 10 | use Illuminate\Support\Facades\Hash; |
14 | -use Illuminate\Support\Facades\Mail; | ||
15 | -use Illuminate\Support\Facades\Redis; | ||
16 | use Illuminate\Support\Facades\Storage; | 11 | use Illuminate\Support\Facades\Storage; |
17 | use Illuminate\Support\Facades\Validator; | 12 | use Illuminate\Support\Facades\Validator; |
18 | use Jiannei\Response\Laravel\Support\Facades\Response; | 13 | use Jiannei\Response\Laravel\Support\Facades\Response; |
19 | 14 | ||
20 | class UserController extends Controller | 15 | class UserController extends Controller |
21 | { | 16 | { |
22 | - // | ||
23 | - | ||
24 | public function login(Request $request) | 17 | public function login(Request $request) |
25 | { | 18 | { |
26 | $validator = Validator::make($request->all(), [ | 19 | $validator = Validator::make($request->all(), [ |
... | @@ -50,59 +43,6 @@ class UserController extends Controller | ... | @@ -50,59 +43,6 @@ class UserController extends Controller |
50 | 43 | ||
51 | } | 44 | } |
52 | 45 | ||
53 | - public function register(Request $request) | ||
54 | - { | ||
55 | - $validator = Validator::make($request->all(), [ | ||
56 | - 'email' => 'required|email|unique:users|max:255', | ||
57 | - 'password' => 'required', | ||
58 | - 'verify_code' => 'required' | ||
59 | - ]); | ||
60 | - | ||
61 | - if ($validator->fails()){ | ||
62 | - return Response::fail('',500,$validator->errors()); | ||
63 | - } | ||
64 | - | ||
65 | - try{ | ||
66 | - $redis = Redis::connection(); | ||
67 | - | ||
68 | - if ($request->verify_code != '123123'){ | ||
69 | - if ($redis->get($request->email) !== $request->verify_code){ | ||
70 | - return Response::fail('verify code failed',500); | ||
71 | - } | ||
72 | - } | ||
73 | - | ||
74 | - $data = $validator->validated(); | ||
75 | - $data['password'] = bcrypt($data['password']); | ||
76 | - | ||
77 | - $user = User::query()->create($data); | ||
78 | - UserProfile::query()->create(['user_id' => $user->id]); | ||
79 | - | ||
80 | - $token = $user->createToken($user->email)->plainTextToken; | ||
81 | - | ||
82 | - $response = ['token' => $token]; | ||
83 | - | ||
84 | - return Response::success($response); | ||
85 | - }catch ( \Exception $exception ){ | ||
86 | - return Response::fail('register failed',500,$exception->getMessage()); | ||
87 | - } | ||
88 | - } | ||
89 | - | ||
90 | - public function verify(Request $request) | ||
91 | - { | ||
92 | - $validator = Validator::make($request->all(), [ | ||
93 | - 'email' => 'required|email|max:255', | ||
94 | - ]); | ||
95 | - | ||
96 | - if ($validator->fails()){ | ||
97 | - return Response::fail('',500,$validator->errors()); | ||
98 | - } | ||
99 | - | ||
100 | - SendVerificationMessage::dispatch($request->email); | ||
101 | - | ||
102 | - return Response::success(['message' => 'Has been sent to your email: ' . $request->email], | ||
103 | - 'Has been sent to your email: ' . $request->email); | ||
104 | - } | ||
105 | - | ||
106 | public function avatar(Request $request) | 46 | public function avatar(Request $request) |
107 | { | 47 | { |
108 | $validator = Validator::make($request->all(), [ | 48 | $validator = Validator::make($request->all(), [ |
... | @@ -184,4 +124,48 @@ class UserController extends Controller | ... | @@ -184,4 +124,48 @@ class UserController extends Controller |
184 | 124 | ||
185 | return Response::success(['delete' => true]); | 125 | return Response::success(['delete' => true]); |
186 | } | 126 | } |
127 | + | ||
128 | + public function update(Request $request, $id) | ||
129 | + { | ||
130 | + $validator = Validator::make($request->all(), [ | ||
131 | + 'avatar' => 'required|string', | ||
132 | + 'email' => 'required|string', | ||
133 | + 'nickname' => 'required|string', | ||
134 | + 'gender' => 'sometimes|integer', | ||
135 | + ]); | ||
136 | + | ||
137 | + if ($validator->fails()){ | ||
138 | + return Response::fail('',500,$validator->errors()); | ||
139 | + } | ||
140 | + | ||
141 | + try{ | ||
142 | + $user = User::query()->find($id); | ||
143 | + if ($user->id != $request->user()->id) return Response::fail('不可修改他人信息',500); | ||
144 | + | ||
145 | + $user->email = $request->email; | ||
146 | + $user->avatar = $request->avatar; | ||
147 | + $user->nickname = $request->nickname; | ||
148 | + $user->gender = $request->gender ?? 0; | ||
149 | + | ||
150 | + $user->save(); | ||
151 | + | ||
152 | + }catch ( \Exception $exception ){ | ||
153 | + return Response::fail('',500,$exception->getMessage()); | ||
154 | + } | ||
155 | + | ||
156 | + return Response::success(['avatar' => $user->avatar]); | ||
157 | + } | ||
158 | + | ||
159 | + public function destroy($id, Request $request) | ||
160 | + { | ||
161 | + $user = User::query()->find($id); | ||
162 | + | ||
163 | + if ($user->id != $request->user()->id) return Response::fail('不可注销他人信息',500); | ||
164 | + | ||
165 | + $user->state = 0; | ||
166 | + | ||
167 | + $user->save(); | ||
168 | + | ||
169 | + return Response::success(['destroy' => true]); | ||
170 | + } | ||
187 | } | 171 | } | ... | ... |
... | @@ -17,10 +17,12 @@ use Illuminate\Routing\Router; | ... | @@ -17,10 +17,12 @@ use Illuminate\Routing\Router; |
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', 'UserController@login'); |
20 | - $api->post('/register', 'UserController@register'); | 20 | + |
21 | + /** 用户注册*/ | ||
22 | + $api->post('/register', 'AuthController@register'); | ||
21 | 23 | ||
22 | /** 发送验证码 */ | 24 | /** 发送验证码 */ |
23 | - $api->get('/verify', 'UserController@verify'); | 25 | + $api->get('/verify', 'AuthController@verify'); |
24 | 26 | ||
25 | /** 社会化用户登录*/ | 27 | /** 社会化用户登录*/ |
26 | $api->any('auth/{service}/callback', 'AuthController@apiHandleProviderCallback'); | 28 | $api->any('auth/{service}/callback', 'AuthController@apiHandleProviderCallback'); |
... | @@ -53,6 +55,12 @@ Route::prefix('v1')->namespace('App\Http\Controllers\V1')->middleware('auth:sanc | ... | @@ -53,6 +55,12 @@ Route::prefix('v1')->namespace('App\Http\Controllers\V1')->middleware('auth:sanc |
53 | /** 用户信息*/ | 55 | /** 用户信息*/ |
54 | $api->get('/user', 'UserController@user'); | 56 | $api->get('/user', 'UserController@user'); |
55 | 57 | ||
58 | + /** 用户信息修改*/ | ||
59 | + $api->put('/user/{id}', 'UserController@update'); | ||
60 | + | ||
61 | + /** 用户注销*/ | ||
62 | + $api->delete('/user/{id}', 'UserController@destroy'); | ||
63 | + | ||
56 | /** 我的作品 */ | 64 | /** 我的作品 */ |
57 | $api->get('/my/videos', 'UserController@videos'); | 65 | $api->get('/my/videos', 'UserController@videos'); |
58 | 66 | ... | ... |
-
Please register or login to post a comment