|
1 | | -from datetime import datetime |
2 | | - |
3 | 1 | import jwt |
4 | 2 | from django.apps import apps |
5 | 3 | from django.conf import settings |
|
14 | 12 | ListAPIView, |
15 | 13 | ListCreateAPIView, |
16 | 14 | RetrieveUpdateDestroyAPIView, |
17 | | - UpdateAPIView, |
18 | 15 | RetrieveAPIView, |
19 | 16 | ) |
20 | 17 | from rest_framework.permissions import AllowAny, IsAuthenticated |
|
33 | 30 | ) |
34 | 31 | from projects.serializers import ProjectListSerializer |
35 | 32 | from users.helpers import ( |
36 | | - reset_email, |
37 | 33 | verify_email, |
38 | 34 | check_related_fields_update, |
39 | 35 | ) |
|
48 | 44 | from users.serializers import ( |
49 | 45 | AchievementDetailSerializer, |
50 | 46 | AchievementListSerializer, |
51 | | - EmailSerializer, |
52 | | - PasswordSerializer, |
53 | 47 | UserDetailSerializer, |
54 | 48 | UserListSerializer, |
55 | 49 | VerifyEmailSerializer, |
@@ -222,85 +216,6 @@ def get(self, request): |
222 | 216 | ) |
223 | 217 |
|
224 | 218 |
|
225 | | -class EmailResetPassword(GenericAPIView): |
226 | | - serializer_class = EmailSerializer |
227 | | - permission_classes = [AllowAny] |
228 | | - |
229 | | - def post(self, request, *args, **kwargs): |
230 | | - serializer = self.get_serializer(data=request.data) |
231 | | - serializer.is_valid() |
232 | | - |
233 | | - user = User.objects.get(email=serializer.data["email"]) |
234 | | - |
235 | | - reset_email(user, request) |
236 | | - |
237 | | - return Response(serializer.data, status=status.HTTP_201_CREATED) |
238 | | - |
239 | | - |
240 | | -class ResetCurrentUserPassword(UpdateAPIView): |
241 | | - serializer_class = PasswordSerializer |
242 | | - permission_classes = [AllowAny] |
243 | | - |
244 | | - def get(self, request, *args, **kwargs): |
245 | | - refresh_token = request.GET.get("refresh_token") |
246 | | - try: |
247 | | - RefreshToken(refresh_token).check_blacklist() |
248 | | - except TokenError: |
249 | | - return redirect( |
250 | | - "https://procollab.ru/auth/reset_password/", |
251 | | - status=status.HTTP_400_BAD_REQUEST, |
252 | | - message="Used token", |
253 | | - ) |
254 | | - |
255 | | - return Response({"message": "Enter new password"}) |
256 | | - |
257 | | - def update(self, request, *args, **kwargs): |
258 | | - serializer = self.get_serializer(data=request.data) |
259 | | - serializer.is_valid() |
260 | | - |
261 | | - try: |
262 | | - refresh_token = request.GET.get("refresh_token") |
263 | | - access_token = request.GET.get("access_token") |
264 | | - |
265 | | - payload = jwt.decode( |
266 | | - jwt=access_token, key=settings.SECRET_KEY, algorithms=["HS256"] |
267 | | - ) |
268 | | - user = User.objects.get(id=payload["user_id"]) |
269 | | - |
270 | | - # fixme |
271 | | - last_update = user.datetime_updated |
272 | | - frequency_update = datetime.utcnow().minute - last_update.minute |
273 | | - if frequency_update <= 10: |
274 | | - return redirect( |
275 | | - "https://procollab.ru/auth/reset_password/", |
276 | | - status=status.HTTP_400_BAD_REQUEST, |
277 | | - message="You can't change your password so often", |
278 | | - ) |
279 | | - |
280 | | - user.set_password(serializer.data["new_password"]) |
281 | | - user.save() |
282 | | - |
283 | | - RefreshToken(refresh_token).blacklist() |
284 | | - return redirect( |
285 | | - "https://app.procollab.ru/auth/reset_password/", |
286 | | - status=status.HTTP_200_OK, |
287 | | - message="Succeed", |
288 | | - ) |
289 | | - |
290 | | - except jwt.ExpiredSignatureError: |
291 | | - return redirect( |
292 | | - "https://app.procollab.ru/auth/reset_password/", |
293 | | - status=status.HTTP_400_BAD_REQUEST, |
294 | | - message="Activate Expired", |
295 | | - ) |
296 | | - except jwt.DecodeError: |
297 | | - return redirect( |
298 | | - "https://app.procollab.ru/auth/reset_password/", |
299 | | - status=status.HTTP_400_BAD_REQUEST, |
300 | | - message="Decode error", |
301 | | - ) |
302 | | - |
303 | | - |
304 | 219 | class AchievementList(ListCreateAPIView): |
305 | 220 | queryset = UserAchievement.objects.get_achievements_for_list_view() |
306 | 221 | serializer_class = AchievementListSerializer |
|
0 commit comments