def d2l_authorization(self): uc = self.get_user_context() if not isinstance(uc, d2lauth.D2LUserContext): return uc # if no user_context is setup, return uc to d2l to get authorized. try: whoami = d2lservice.get_whoami(uc) id = str(whoami.UniqueName) + self.settings('d2l_append_email_address','') fullname = whoami.FirstName + u' ' + whoami.LastName # if doesn't exist create it and update login info category = self.request.params.get('category','0') user = Users.by({'email':id}).first() if not user: Users.registerNonLocalUser(email=id, fullname=fullname) user = Users.by({'email':id}).first() #retrieve new user # auto group incoming users if Validate.bool(self.request.params.get('group','false')): user = Users.add_groups(user, Groups.groups_auto_assigned_by_category(category)) user = Users.login_updates(user) # set session and send them to alias controller return HTTPFound(location=route_url('alias', self.request, _query={'category':category} ), headers=remember(self.request, user.id)) except Exception as e: print "ERROR 0: " + str(e) # log later? return HTTPForbidden()