def after_login(resp): if resp.email is None or resp.email == "": flash(gettext('Invalid login. Please try again.')) return redirect(url_for('login')) user = User.query.filter_by(email=resp.email).first() if user is None: username = resp.username if username is None or username == "": username = resp.email.split('@')[0] username = User.make_valid_username(username) username = User.make_unique_username(username) user = User(username=username, email=resp.email) db.session.add(user) db.session.commit() # make the user follow him/herself db.session.add(user.follow(user)) db.session.commit() remember_me = False if 'remember_me' in session: remember_me = session['remember_me'] session.pop('remember_me', None) login_user(user, remember=remember_me) return redirect(request.args.get('next') or url_for('index'))
def validate(self): if not Form.validate(self): return False if self.username.data == self.original_username: return True if self.username.data != User.make_valid_username(self.username.data): self.username.errorsappend('This username has invalid characters. Please use letters, numbers, dots and undersocres only.') return False user = User.query.filter_by(username = self.username.data).first() if user != None: self.username.errors.append('This username is aleady in use. Please choose another one.') return False return True
def post(self): if request.json: params = request.json elif request.form: params = request.form else: return {'status':'error', 'description':'Request Failed!'}, 400 # Check Requirements <Email, Password> if not 'email' in params: return {'status':'error', 'description':'Email Address input error!'}, 400 elif not 'password' in params: return {'status':'error', 'description':'Password Missing'}, 400 # Check email address is unique if User.email_exists(params['email']): return {'status':'error', 'description':'Already registered Email address'}, 400 # Make username based on email address when it was not submitted. if not 'username' in params or params['username'] == "" or params['username'] == None: username = params['email'].split('@')[0] username = User.make_valid_username(username) # username = User.make_unique_username(username) else: username = params['username'] if User.username_exists(username): return {'status':'error', 'description':'Username already exists.'}, 400 # Check User Birthday if not 'birthday' in params or params['birthday']=="": birthday = None else: birthday = params['birthday'] u = User(email=params['email'], username=username, fb_id=None, birthday=birthday) # Password Hashing u.hash_password(params['password']) u.key = md5('ACTIVATION'+str(int(random.random()*10000))).hexdigest() # Database Insert/Commit try: db.session.add(u) db.session.commit() except: return {'status':'error', 'description':'Something went wrong.'}, 500 send_awaiting_confirm_mail(u) g.user = u token = g.user.generate_auth_token() return {'status':'success', 'data':{'user':{'id': g.user.id, 'username': g.user.username, 'email': g.user.email, 'birthday': g.user.birthday, 'confirmed_at':g.user.confirmed_at.strftime("%Y-%m-%d %H:%M:%S") if g.user.confirmed_at else None}, 'token': token.decode('ascii')}}, 201