Exemple #1
0
    def post(self):
        error = ""

        get_username = self.request.get("username")
        get_password = self.request.get("password")
        get_verify = self.request.get("verify")
        get_email = self.request.get("email")

        if get_email and not MAIL_RE.match(get_email):
            error = "Invalid e-mail"

        if get_password != get_verify:
            error = "Passwords do not match."

        if not PASS_RE.match(get_password):
            error = "Invalid password."

        if not USER_RE.match(get_username):
            error = "Invalid Username. Please try again."

        if db.GqlQuery("SELECT __key__ FROM Users WHERE username = :1", get_username).count() != 0:
            error = "User already exists. Please choose a different username"

        if error:
            self.render(username=get_username, password=get_password, verify=get_verify, email=get_email, error=error)
        else:
            hashed_result = SaltHasher(get_password)
            user_db = Users(username=get_username, password=hashed_result.get_result()[0], email=get_email, salt=hashed_result.get_result()[1])
            user_db.put()

            user_id = str(user_db.key().id())
            self.response.headers.add_header('Set-Cookie', 'user_id=%s|%s; Path=/' % (user_id, hashed_result.get_result()[0]))
            self.redirect("/unit6/blog/welcome")
Exemple #2
0
    def add(ip, facebookid=None, email=None, name=None, gender=None, profile_url=None, native_language=None):
	location = geolocate(ip)
	country = location.get('country','')
	city = location.get('city','')
	try:
	    latitude = float(location.get('latitude',''))
	    longitude = float(location.get('longitude',''))
	except:
	    latitude = None
	    longitude = None
	udb = db.Query(Users)
	if facebookid is not None or email is not None:
	    anonymous = False
	else:
	    anonymous = True
	if anonymous:
	    udb.filter('ip = ', ip)
	elif facebookid is not None:
	    udb.filter('facebookid = ', facebookid)
	else:
	    udb.filter('email = ', email)
	item = udb.get()
	newuser = False
	if item is None:
	    newuser = True
	    item = Users()
	item.city = city
	item.country = country
	if latitude is not None:
	    item.latitude = latitude
	if longitude is not None:
	    item.longitude = longitude
	if facebookid is not None:
	    item.facebookid = facebookid
	if email is not None:
	    item.email = email
	if name is not None:
	    item.name = name
	if gender is not None:
	    item.gender = gender
	if profile_url is not None:
	    item.profile_url = profile_url
	item.last_login = datetime.datetime.now()
	item.put()
	if newuser:
	    p = dict()
	    url = '/wwl/userstats'
	    taskqueue.add(url=url, params=p)
	return True
Exemple #3
0
    def post(self):
        globals.init()
        current_url = self.request.url.split('/')[-1]
        
        if current_url == 'main':
            globals.main_page = True
            
        has_error = False
        user_input = self.request.get('username')
        password_input = self.request.get('password')
        verify_input = self.request.get('verify')
        email_input = self.request.get('email')
        valid_u = utils.valid_username(user_input)
        valid_p = utils.valid_password(password_input)
        valid_e = utils.valid_email(email_input)
        user_error =  ''
        pass_error =  ''
        email_error = ''
        verify_error = ''

        if not valid_u:
             user_error = 'Invalid username, please try again.'
             has_error = True     
        if not valid_p:
             pass_error =  'Invalid password, please try again.'
             has_error = True
        if password_input != verify_input:
            verify_error = 'Passwords do not match, try again.'
            has_error = True
        if not valid_e and email_input != '':
            email_error = 'Invalid email, please try again.'
            has_error = True
        if has_error != False:
            if not globals.main_page:
                self.render("register.html",error_user = user_error ,error_pass = pass_error,error_verify = verify_error,error_email = email_error,username = user_input,email = email_input)
            else:
                self.render("register_main.html",error_user = user_error ,error_pass = pass_error,error_verify = verify_error,error_email = email_error,username = user_input,email = email_input)
        else:
            hash_pass = utils.make_pw_hash(user_input,password_input)
            user_input = str(user_input)
            user_taken = False
            email_taken = False
            data = db.GqlQuery("select * from Users order by user_name")
            for entry in data:
                user = entry.user_name
                email= entry.user_email
                if user == user_input:
                    user_taken = True
                if email == email_input and email != '':
                    email_taken = True
            if user_taken or email_taken:
                user_error = 'Sorry, the username you selected is already taken'
                email_error= 'Sorry, this email is already registered'
                if user_taken and email_taken:
                    if not globals.main_page:
                        self.render('register.html', error_user = user_error, error_email = email_error)
                    else:
                        self.render('register_main.html', error_user = user_error, error_email = email_error)
                if user_taken:
                    if not globals.main_page:
                        self.render('register.html', error_user = user_error, email = email_input)
                    else:
                        self.render('register_main.html', error_user = user_error, email = email_input)
                else:
                    if not globals.main_page: 
                        self.render('register.html', error_email = email_error, username = user_input)
                    else:
                        self.render('register_main.html', error_email = email_error, username = user_input)
            else:
                new = Users(user_name = user_input, user_pass = hash_pass, user_email = email_input)
                new.put()
                            
                self.response.headers.add_header('Set-Cookie', 'user_id=%s|%s; Path=/' % (new.key().id(),hash_pass))
                
                if globals.main_page: 
                    self.redirect('/homework')
                else:
                    self.redirect('/wiki/')