Esempio n. 1
0
 def remove(self, args):
     "Remove user and his/her jobs"
     user = User.by_id(args.user)
     for jobmeta in user.jobs:
         print jobmeta.jobid
         self.job_factory.fromId(jobmeta.jobid).delete()
     User.delete(user)
     commit()
Esempio n. 2
0
 def remove(self, args):
     "Remove user and his/her jobs"
     user = User.by_id(args.user)
     for jobmeta in user.jobs:
         print jobmeta.jobid
         self.job_factory.fromId(jobmeta.jobid).delete()
     User.delete(user)
     commit()
Esempio n. 3
0
 def update(self, args):
     "Update user data"
     user = User.by_id(args.userid)
     if 'user' in args:
         user.userid = args.user
         for job in user.jobs:
             job.owner = args.user
             JobMeta.add(job)
     if 'name' in args:
         user.displayname = args.name
     if 'email' in args:
         user.email = args.email
     if 'password' in args:
         user.password = args.password
     User.add(user)
     commit()
Esempio n. 4
0
 def update(self, args):
     "Update user data"
     user = User.by_id(args.userid)
     if 'user' in args:
         user.userid = args.user
         for job in user.jobs:
             job.owner = args.user
             JobMeta.add(job)
     if 'name' in args:
         user.displayname = args.name
     if 'email' in args:
         user.email = args.email
     if 'password' in args:
         user.password = args.password
     User.add(user)
     commit()
Esempio n. 5
0
    def login(self):
        """Login page

        * Authenticated -> forbidden exception
        * Unauthenticated

            * GET login page + MAC challenge
            * POST -> authenticated -> redirect came_from
                                        or home if came_from=login
            * POST -> unauthenticated -> login page

        Or if auto_register=True then generates user
        and redirects back to request.url
        except when route is PUT status.json then auto_register is ignored
        """
        is_authenticated = self.request.user is not None
        if is_authenticated:
            return self.request.exception

        referrer = self.request.url
        login_url = self.request.route_url('login')
        if referrer == login_url:
            # never use the login form itself as came_from
            referrer = self.request.route_url('home')

        auto_register = self.request.registry.settings['auto_register']

        # in anonymous mode we don't want the job status to be updated
        # by anyone so return the login form
        is_put = self.request.method == u'PUT'
        route_name = self.request.matched_route.name
        status_update = route_name == 'status.json' and is_put

        if auto_register and not status_update:
            user = User.generate()
            userid = user.userid
            # Force committing as this is an exception handler
            # which causes pyramid_tm to do a rollback instead of commit
            try:
                transaction.commit()
            except:
                pass

            headers = remember(self.request, userid)
            return HTTPFound(location=referrer, headers=headers)
        else:
            came_from = self.request.params.get('came_from', referrer)
            userid = ''
            password = ''

            if self.request.method == 'POST':
                userid = self.request.POST['userid']
                password = self.request.POST['password']
                user = User.by_id(userid)
                if user is not None and user.validate_password(password):
                    headers = remember(self.request, userid)
                    return HTTPFound(location=came_from, headers=headers)
            else:
                self.request.response.status_int = 401
                # Add MAC challenge
                self.request.response.headers["WWW-Authenticate"] = "MAC"

            return dict(
                came_from=came_from,
                userid=userid,
                password=password,
            )
Esempio n. 6
0
    def login(self):
        """Login page

        * Authenticated -> forbidden exception
        * Unauthenticated

            * GET login page + MAC challenge
            * POST -> authenticated -> redirect came_from
                                        or home if came_from=login
            * POST -> unauthenticated -> login page

        Or if auto_register=True then generates user
        and redirects back to request.url
        except when route is PUT status.json then auto_register is ignored
        """
        is_authenticated = self.request.user is not None
        if is_authenticated:
            return self.request.exception

        referrer = self.request.url
        login_url = self.request.route_url('login')
        if referrer == login_url:
            # never use the login form itself as came_from
            referrer = self.request.route_url('home')

        auto_register = self.request.registry.settings['auto_register']

        # in anonymous mode we don't want the job status to be updated
        # by anyone so return the login form
        is_put = self.request.method == u'PUT'
        route_name = self.request.matched_route.name
        status_update = route_name == 'status.json' and is_put

        if auto_register and not status_update:
            user = User.generate()
            userid = user.userid
            # Force committing as this is an exception handler
            # which causes pyramid_tm to do a rollback instead of commit
            try:
                transaction.commit()
            except:
                pass

            headers = remember(self.request, userid)
            return HTTPFound(location=referrer,
                             headers=headers)
        else:
            came_from = self.request.params.get('came_from', referrer)
            userid = ''
            password = ''

            if self.request.method == 'POST':
                userid = self.request.POST['userid']
                password = self.request.POST['password']
                user = User.by_id(userid)
                if user is not None and user.validate_password(password):
                    headers = remember(self.request, userid)
                    return HTTPFound(location=came_from,
                                     headers=headers)
            else:
                self.request.response.status_int = 401
                # Add MAC challenge
                self.request.response.headers["WWW-Authenticate"] = "MAC"

            return dict(came_from=came_from,
                        userid=userid,
                        password=password,
                        )