Esempio n. 1
0
    def update(self):
        allowed = PLOUD.registration
        if not allowed:
            raise HTTPFound(location = '/waitinglist.html')

        principal = authenticated_userid(self.request)
        if principal:
            raise HTTPFound(location = '/dashboard.html')

        errors, data = validate_signup(self.request)
        if errors:
            return

        email = data['signup-email']
        site_name = data['signup-site-name']
        password = ''.join(
            random.choice(ALLOWED_SITE_NAME_CHARS) for i in range(8))

        user = User(email, password, 98)
        token = user.token
        Session.add(user)
        Session.flush()

        uri = user.uri

        send_activation(email, token)

        try:
            utils.provision_site(user, 'plone41', site_name)
        except Exception, exc:
            transaction.abort()
            self.errors = {'signup-site-name': str(exc)}
            log.exception('Site provision problem')
            return
Esempio n. 2
0
    def update(self):
        eid = None
        error = None
        errors = None
        try:
            eid = int(self.request.GET.get('eid'))
        except:
            pass

        if eid:
            error = Session.query(Error).filter_by(id=eid).first()
            if error is not None:
                self.error = error
                return

        count = Session.query(Error).count()
        self.errors = Session.query(Error)\
            .order_by(Error.time.desc()).slice(0,50)
Esempio n. 3
0
    def __getitem__(self, key):
        try:
            eid = int(key)
        except:
            raise KeyError(key)

        error = Session.query(Error).filter_by(id=eid).first()
        error.__parent__ = self
        error.__name__ = key
        return error
Esempio n. 4
0
def validate_resetpw(request):
    email = request.POST.get('login-email', '').lower()

    if not email:
        return {'login-email': u"Can't find login information."}

    user = Session.query(User).filter_by(email=email).first()
    if user is None:
        return {'login-email': u"Can't find login information."}

    return {}
Esempio n. 5
0
def checkSitename(node, site_name):
    site_name_set = set(site_name)
    if not site_name_set.issubset(ALLOWED_SITE_NAME_CHARS):
        raise form.Invalid(
            node, "We couldn't create your Plone site. You've typed invalid characters in site name.  Please only use lowercase alpha-numeric characters, the hyphen, and the underscore.")
    elif site_name in PLOUD.reserved_sitenames:
        raise form.Invalid(
            node, "We couldn't create your Plone site. You've chosen a reserved site name.  Please try a different site name.")
    else:
        exists = Session.query(Site).filter_by(site_name=site_name).first()
        if exists is not None:
            raise form.Invalid(
                node, "We couldn't create your Plone site. Site with this name already exists. Please try a different site name.")
Esempio n. 6
0
def validate_login(request):
    errors = {}

    email = request.POST.get('login-email', '').lower()
    password = request.POST.get('login-password', '')

    user = Session.query(User).filter_by(email=email).first()
    if user is None:
        errors['login-email'] = 'Account not found.'
        return errors

    if user.password != password:
        errors['login-password'] = '******'

    return errors
Esempio n. 7
0
    def render(self):
        request = self.request
        principal = authenticated_userid(request)
        if principal:
            raise HTTPFound(location='/dashboard.html')

        errors = validate_login(request)
        if errors:
            self.status = errors
            raise HTTPFound(location='/index.html')

        email = request.POST.get('login-email', '').lower()
        user = Session.query(User).filter_by(email=email).first()
        
        headers = remember(request, user.uri)
        raise HTTPFound(location='/dashboard.html', headers=headers)
Esempio n. 8
0
    def update(self):
        token = self.request.GET.get('token')

        user = Session.query(User).filter_by(token=token).first()
        if user is not None:
            user.type = 0
            user.token = None
            user.validated = datetime.datetime.now()

            # change policy to 0 (free)
            conn = ploud_config.PLOUD_POOL.getconn()
            cursor = conn.cursor()
            POLICIES[user.type].apply(user.id, cursor)
            cursor.close()
            conn.commit()
            ploud_config.PLOUD_POOL.putconn(conn)

            headers = remember(self.request, user.uri)
            raise HTTPFound(location = '/change-password.html', headers = headers)
        else:
            raise HTTPFound(location="/index.html?message=Can't validate email address.")
Esempio n. 9
0
def checkEmail(node, email):
    if Session.query(User).filter_by(email=email).first() is not None:
        raise form.Invalid(node, 'E-Mail address aready is in use.')
Esempio n. 10
0
 def removeHandler(self):
     Session.delete(self.context)
     self.message('Error has been removed.')
     raise HTTPFound(location='../')
Esempio n. 11
0
 def update(self):
     count = models.Session.query(models.Error).count()
     self.errors = Session.query(Error)\
         .order_by(Error.time.desc()).slice(0,50)