示例#1
0
def register(environ, start_response):
    domain = get_domain(environ["HTTP_HOST"])
    query = environ["tiddlyweb.query"]
    name = query.get("name", [None])[0]
    company = query.get("company", [None])[0]
    country = query.get("country", [None])[0]
    email = query.get("email", [None])[0]
    if not (name and company and email):
        # The form has not been filled out
        raise HTTP302(server_base_url(environ) + "/pages/register.html")
    to_address = environ["tiddlyweb.config"].get("wikidata.register_address", "*****@*****.**")
    subject = "Registration Request"
    body = """
name: %s
email: %s
company: %s
country: %s
""" % (
        name,
        email,
        company,
        country,
    )
    try:
        send_email(to_address, subject=subject, body=body, from_="avox@" + domain)
    except socket.error:
        logging.debug("failed to send: %s:%s:%s", to_address, subject, body)
    raise HTTP303(server_base_url(environ) + "/pages/registered.html")
示例#2
0
def _create_user(environ, start_response, creation=0, expiration=0, role='tier1'):
    domain = get_domain(environ['HTTP_HOST'])
    if creation == 0:
        creation = time.time()
    store = environ['tiddlyweb.store']
    query = environ['tiddlyweb.query']
    name = query.get('name', [None])[0]
    email = query.get('email', [None])[0]
    company = query.get('company', [None])[0]
    country = query.get('country', [None])[0]
    if not (name and email):
        # The form has not been filled out
        return _user_form(environ, start_response, role=role, message='Missing Data!',
                formdata={'name': name, 'email': email,
                    'company': company, 'country': country})
    user = User(email)
    try:
        user = store.get(user)
        # User exists!
        return _user_form(environ, start_response, role=role, message='That account already exists!',
                formdata={'name': name, 'email': email,
                    'company': company, 'country': country})
    except NoUserError:
        password = _random_pass()
        user.set_password(password)
        user.add_role(role)
        store.put(user)

    bag_name = environ['tiddlyweb.config'].get('magicuser.bag', 'MAGICUSER')
    ensure_bag(bag_name, store, policy_dict={
        'read': ['NONE'], 'write': ['NONE'],
        'create': ['NONE'], 'manage': ['NONE']})
    tiddler = Tiddler(email, bag_name)
    tiddler.fields['country'] = country
    tiddler.fields['company'] = company
    tiddler.fields['name'] = name
    # Set the creation and expiration times.
    now = time.time()
    tiddler.fields['creation'] = '%s' % creation
    tiddler.fields['expiry'] = '%s' % expiration
    store.put(tiddler)

    to_address = email
    subject = domain+" user info"
    body = """
Here's your info:
Username: %s
Password: %s
""" % (email, password)
    query_string = '?email=%s' % to_address
    try:
        send_email(to_address, subject=subject, body=body, from_='avox@'+domain)
        query_string += '&success=1&role=%s' % role
        raise HTTP303(server_base_url(environ)+'/pages/new_account'+query_string)
    except socket.error:
        logging.debug('failed to send: %s:%s:%s', to_address, subject, body)
        query_string += '&failure=1&role=%s' % role
        raise HTTP302(server_base_url(environ)+'/pages/new_account'+query_string)
示例#3
0
def register(environ, start_response):
    domain = get_domain(environ['HTTP_HOST'])
    query = environ['tiddlyweb.query']
    name = query.get('name', [None])[0]
    company = query.get('company', [None])[0]
    country = query.get('country', [None])[0]
    email = query.get('email', [None])[0]
    if not (name and company and email):
        # The form has not been filled out
        raise HTTP302(server_base_url(environ) + '/pages/register.html')
    to_address = environ['tiddlyweb.config'].get(
            'wikidata.register_address', '*****@*****.**')
    subject = 'Registration Request'
    body = """
name: %s
email: %s
company: %s
country: %s
""" % (name, email, company, country)
    try:
        send_email(to_address, subject=subject, body=body, from_='avox@'+domain)
    except socket.error:
        logging.debug('failed to send: %s:%s:%s', to_address, subject, body)
    raise HTTP303(server_base_url(environ) + '/pages/registered.html')
示例#4
0
def _create_user(environ, start_response, creation=0, expiration=0, role="tier1"):
    domain = get_domain(environ["HTTP_HOST"])
    if creation == 0:
        creation = time.time()
    store = environ["tiddlyweb.store"]
    query = environ["tiddlyweb.query"]
    name = query.get("name", [None])[0]
    email = query.get("email", [None])[0]
    company = query.get("company", [None])[0]
    country = query.get("country", [None])[0]
    if not (name and email):
        # The form has not been filled out
        return _user_form(
            environ,
            start_response,
            role=role,
            message="Missing Data!",
            formdata={"name": name, "email": email, "company": company, "country": country},
        )
    user = User(email)
    try:
        user = store.get(user)
        # User exists!
        return _user_form(
            environ,
            start_response,
            role=role,
            message="That account already exists!",
            formdata={"name": name, "email": email, "company": company, "country": country},
        )
    except NoUserError:
        password = _random_pass()
        user.set_password(password)
        user.add_role(role)
        store.put(user)

    bag_name = environ["tiddlyweb.config"].get("magicuser.bag", "MAGICUSER")
    ensure_bag(
        bag_name, store, policy_dict={"read": ["NONE"], "write": ["NONE"], "create": ["NONE"], "manage": ["NONE"]}
    )
    tiddler = Tiddler(email, bag_name)
    tiddler.fields["country"] = country
    tiddler.fields["company"] = company
    tiddler.fields["name"] = name
    # Set the creation and expiration times.
    now = time.time()
    tiddler.fields["creation"] = "%s" % creation
    tiddler.fields["expiry"] = "%s" % expiration
    store.put(tiddler)

    to_address = email
    subject = domain + " user info"
    body = """
Here's your info:
Username: %s
Password: %s
""" % (
        email,
        password,
    )
    query_string = "?email=%s" % to_address
    try:
        send_email(to_address, subject=subject, body=body, from_="avox@" + domain)
        query_string += "&success=1&role=%s" % role
        raise HTTP303(server_base_url(environ) + "/pages/new_account" + query_string)
    except socket.error:
        logging.debug("failed to send: %s:%s:%s", to_address, subject, body)
        query_string += "&failure=1&role=%s" % role
        raise HTTP302(server_base_url(environ) + "/pages/new_account" + query_string)