auth vk
This commit is contained in:
@@ -1,10 +1,13 @@
|
||||
import os
|
||||
import random
|
||||
import string
|
||||
|
||||
from django.contrib.auth import login
|
||||
from django.contrib.auth.models import User
|
||||
from django.core.exceptions import ObjectDoesNotExist
|
||||
from requests import get
|
||||
|
||||
from Main.models import UserInfo
|
||||
from SprintLib.BaseView import BaseView
|
||||
|
||||
|
||||
@@ -22,10 +25,26 @@ class VKAuthView(BaseView):
|
||||
resp = get(f'https://api.vk.com/method/secure.checkToken?token={access_token}&access_token={token}&v=5.131').json()
|
||||
if 'response' in resp and 'success' in resp['response'] and resp['response']['success'] == 1:
|
||||
user_id = resp['response']['user_id']
|
||||
random_string = lambda: ''.join(random.choices(string.ascii_uppercase + string.digits, k=100))
|
||||
try:
|
||||
user = User.objects.get(userinfo__vk_user_id=user_id)
|
||||
except ObjectDoesNotExist:
|
||||
return "/enter"
|
||||
resp = get(f'https://api.vk.com/method/users.get?access_token={token}&user_ids={user_id}&v=5.131',
|
||||
headers={"accept-language": "ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7"})
|
||||
if resp.status_code != 200:
|
||||
return "/enter"
|
||||
data = resp.json()['response'][0]
|
||||
user = User.objects.create_user(
|
||||
username=random_string(),
|
||||
email='',
|
||||
password=random_string()
|
||||
)
|
||||
UserInfo.objects.create(
|
||||
surname=data['last_name'],
|
||||
name=data['first_name'],
|
||||
vk_user_id=user_id,
|
||||
user=user
|
||||
)
|
||||
login(self.request, user)
|
||||
return "/"
|
||||
return "/set_username"
|
||||
return "/enter"
|
||||
|
Reference in New Issue
Block a user