Esempio n. 1
0
 def mutate(self, info, **kwargs):
     from .form import UserSignupForm
     SignupForm = UserSignupForm(kwargs)
     if SignupForm.is_valid():
         values = SignupForm.cleaned_data
         new_user = User(
             username=values['username'],
             email=values['email'],
             display_name=values['display_name'],
             school=values['school'],
             company=values['company'],
             location=values['location'],
             is_staff=False,
             is_superuser=False,
         )
         new_user.set_password(values['password'])
         new_user.save()
         new_user.set_group(Group.NORMAL_USER)
         token = get_token(new_user)
         payload = get_payload(token, info.context)
         return Register(payload=payload,
                         token=token,
                         permission=list(new_user.get_all_permissions()),
                         user=new_user)
     else:
         raise RuntimeError(SignupForm.errors.as_json())
Esempio n. 2
0
    def mutate(cls, _, info, **kwargs):
        data = {
            'uid': kwargs.get('uid'),
            'token': kwargs.get('token'),
            'new_password1': kwargs.get('password'),
            'new_password2': kwargs.get('password')
        }

        try:
            uid = force_text(uid_decoder(data['uid']))
            user = User.objects.get(pk=uid)
        except (TypeError, ValueError, OverflowError, User.DoesNotExist):
            raise ValueError('The uid is not valid.')

        form = SetPasswordForm(user=user, data=data)

        if not form.is_valid() or not token_generator.check_token(user, data['token']):
            raise ValueError("The token is not valid.")

        form.save()
        change_password_confirmation.send(sender=User, user=user, request=info.context)

        token = get_token(user, info.context)
        payload = get_payload(token, info.context)

        return cls(user=user, token=token, payload=payload)
Esempio n. 3
0
 def mutate(self, info: ResolveInfo, **kwargs):
     login_form = UserLoginForm(kwargs)
     if login_form.is_valid():
         values = login_form.cleaned_data
         usr = User.objects.get(username=values.get('username'))
         token = get_token(usr)
         payload = get_payload(token, info.context)
         update_last_login(None, usr)
         return UserLogin(payload=payload, token=token, permission=list(usr.get_all_permissions()), user=usr)
     else:
         raise RuntimeError(login_form.errors.as_json())
Esempio n. 4
0
 def mutate(self, info, **kwargs):
     from .form import UserLoginForm
     LoginForm = UserLoginForm(kwargs)
     if LoginForm.is_valid():
         values = LoginForm.cleaned_data
         user = User.objects.get(username=values['username'])
         token = get_token(user)
         payload = get_payload(token, info.context)
         return UserLogin(payload=payload,
                          token=token,
                          permission=list(user.get_all_permissions()),
                          user=user)
     else:
         raise RuntimeError(LoginForm.errors.as_json())
Esempio n. 5
0
    def mutate(cls, _, info, **kwargs):
        key = kwargs.pop('key')

        try:
            user = ActivationView().activate(activation_key=key)
        except ActivationError as e:
            raise ValueError(e.message)

        token = get_token(user, info.context)
        payload = get_payload(token, info.context)

        user_activated.send(sender=User, user=user, request=info.context)

        return cls(user=user, token=token, payload=payload)
Esempio n. 6
0
 def mutate(self, info: ResolveInfo, **kwargs):
     signup_form = UserSignupForm(kwargs)
     if signup_form.is_valid():
         values = signup_form.cleaned_data
         usr = User()
         attach_info = AttachInfo()
         assign(usr, **values)
         assign(attach_info, **values)
         usr.set_password(usr.password)
         attach_info.save()
         usr.attach_info = attach_info
         usr.save()
         token = get_token(usr)
         payload = get_payload(token, info.context)
         return UserRegister(payload=payload, token=token, permission=list(usr.get_all_permissions()), user=usr)
     else:
         raise RuntimeError(signup_form.errors.as_json())
Esempio n. 7
0
def _login(user: UserModel) -> dict:
    jti = user.jtis.create(value=crypto.create_jwt_id())
    user.jwt_salt = jti.value
    user.last_login = timezone.now()
    user.save(update_fields=["last_login", "jwt_salt"])
    success = True
    token = shortcuts.get_token(user)
    p = shortcuts.get_payload(token)
    payload = {
            "email":p.get("email", ""),
            "exp":p.get("exp", 0), 
            "origIat":p.get("origIat", 0)
        }
    refreshtkn = shortcuts.create_refresh_token(user)

    return {
        "success":success,
        "token":token,
        "refresh_token": refreshtkn,
        "user":user,
        "payload":payload
    }