def post(self, request, **args): if not args["arg1"]: CREDLY_USER_EMAIL = request.POST['email'] CREDLY_USER_PASSWORD = request.POST['password'] self.credly = slumber.API(self.api_endpoint, auth=ApiAuth(CREDLY_API_KEY, CREDLY_APP_SECRET, email=CREDLY_USER_EMAIL, password=CREDLY_USER_PASSWORD), append_slash=False) try: result = self.build_api_request(**args).post(**request.POST) if request.user.is_authenticated(): save_user_token(request.user.id,result["data"]) except HttpNotFoundError as error: result = {"err": "API not found"} return JsonResponse(result)
def create_credly_user(self, user ): #first check if user already exist members_api = CredlyMember() member = members_api.get_user_by_email(user.email) if member: return False #if user not exist build request and created new one try: result = self.credly.authenticate().register().post(email=user.email, password=user.password) #save it to credly table save_user_token(user.id,result["data"]) except HttpNotFoundError as error: print error pass return True
def request_credly_token(user, email=None, password=None): token = None profile = check_local_profile(user.id) credly = get_credly(email, password) token_age = get_credly_token_age(user.id) # no acccess_token was ever set, so set one up. if not token_age: print "this user was never linked to Credly before. Linking..." moz_credly = get_our_credly() moz_token = get_our_access_token() try: is_member = moz_credly.members().get(email=email, access_token=moz_credly) # if we've not hit an exception, this is a known credly user and we should # be able to get an access and refresh token associated with their account. try: result = credly.authenticate.post() token = result['data'] save_user_token(user.id, token) print "Linked teach-api user to Credly." except HttpClientError as clienterror: token = clienterror.response.status_code pass except HttpNotFoundError as member_error: print "No Credly account found for the supplied email, creating a new account..." # not a known credly user, we'll have to register them headers = XAPIHeaders() params = { 'access_token': moz_token } data = { 'email': email, 'password': password, 'display_name': user.username, 'is_email_verified': 1 } url = CREDLY_API_URL + 'authenticate/register' try: result = requests.post(url, params=params, headers=headers, data=data) response = json.loads(result.text) token = response['data'] save_user_token(user.id, token) print "Created new Credly account for teach-api user." except HttpClientError as clienterror: token = clienterror.response.status_code pass pass # access_token is still good elif token_age < 80: print "access token is still valid, using directly" token = { 'token': profile.access_token, 'refresh_token': profile.refresh_token } # access token expired, user will have to reauthenticate with their password elif token_age > 90: # # FIXME:TODO: THIS SHOULD BE A CRON JOB OF SOME SORT BUT CAN LIVE HERE FOR NOW. # print "a new access token needs to be requested" result = credly.authenticate.post() token = result['data'] save_user_token(user.id, token) # refresh the access_token else: print "access token requires a refresh" result = credly.authenticate.refresh.post({ 'refresh_token': profile.refresh_token }) token = result['data'] save_user_token(user.id, token) return token
def request_credly_token(user, email=None, password=None): token = None profile = check_local_profile(user.id) credly = get_credly(email, password) token_age = get_credly_token_age(user.id) # no acccess_token was ever set, so set one up. if not token_age: print "this user was never linked to Credly before. Linking..." moz_credly = get_our_credly() moz_token = get_our_access_token() try: is_member = moz_credly.members().get(email=email, access_token=moz_credly) # if we've not hit an exception, this is a known credly user and we should # be able to get an access and refresh token associated with their account. try: result = credly.authenticate.post() token = result['data'] save_user_token(user.id, token) print "Linked teach-api user to Credly." except HttpClientError as clienterror: token = clienterror.response.status_code pass except HttpNotFoundError as member_error: print "No Credly account found for the supplied email, creating a new account..." # not a known credly user, we'll have to register them headers = XAPIHeaders() params = {'access_token': moz_token} data = { 'email': email, 'password': password, 'display_name': user.username, 'is_email_verified': 1 } url = CREDLY_API_URL + 'authenticate/register' try: result = requests.post(url, params=params, headers=headers, data=data) response = json.loads(result.text) token = response['data'] save_user_token(user.id, token) print "Created new Credly account for teach-api user." except HttpClientError as clienterror: token = clienterror.response.status_code pass pass # access_token is still good elif token_age < 80: print "access token is still valid, using directly" token = { 'token': profile.access_token, 'refresh_token': profile.refresh_token } # access token expired, user will have to reauthenticate with their password elif token_age > 90: # # FIXME:TODO: THIS SHOULD BE A CRON JOB OF SOME SORT BUT CAN LIVE HERE FOR NOW. # print "a new access token needs to be requested" result = credly.authenticate.post() token = result['data'] save_user_token(user.id, token) # refresh the access_token else: print "access token requires a refresh" result = credly.authenticate.refresh.post( {'refresh_token': profile.refresh_token}) token = result['data'] save_user_token(user.id, token) return token