Ejemplo n.º 1
0
    def login(self, force_login=False, app_refresh_interval=3600):

        if self.account is None:
            raise Exception("User does not exist ! Invalid username !")

        # if the user is logged in already then use the login cookie to authenticate
        if self.account.get('is_logged_in'):
            cookies = requests.utils.cookiejar_from_dict(
                json.loads(self.account.get('cookie')))
            self.session.cookies = cookies

        # check if the user is already logged in or is the login session expired
        if not self.account.get('is_logged_in') or force_login:
            self.pre_login_flow()

            data = dict()
            data['jazoest'] = self.account.get('jazoest')
            data['country_codes'] = [{
                "country_code": "1",
                "source": ["default"]
            }]
            data['enc_password'] = Signature.get_enc_password(
                self.account['password'], self.public_key_id, self.public_key)
            data['_csrftoken'] = self.session.get_csrftoken()
            data['username'] = self.account.get('username')
            data['adid'] = self.device.get('uuid')
            data['guid'] = self.device.get('uuid')
            data['device_id'] = self.device.get('android_device_id')
            data['google_tokens'] = '[]'
            data['password'] = self.account.get('password')
            data['login_attempt_count'] = '0'

            if self.request.send_request(endpoint="accounts/login/",
                                         post=data,
                                         account=self.account,
                                         device=self.device,
                                         session=self.session):
                user_id = self.request.last_json['logged_in_user']['pk']
                update_user_id(self.account.get('id'),
                               user_id)  # SET USER ID IN DATABASE
                update_token(
                    self.account.get('id'),
                    self.request.last_response.cookies.get_dict().get(
                        'csrftoken'))
                update_cookie(
                    self.account.get('id'),
                    json.dumps(self.request.last_response.cookies.get_dict()))

                self.login_flow(just_logged_in=True)
                return True
        else:
            return self.login_flow(False)