Ejemplo n.º 1
0
    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()