def post(self): """ Logins user according to JSON object data. Headers: Content-Type: application/json JSON Request format: { "email": email, "senha": senha } """ data = sign_in_parser.parse_args() # Email exists/Verify password hash if not email_exists(data['email']) or \ not User.verify_hash(data['senha'], get_user_hash(data['email'])): return {'mensagem': 'Usuário e/ou senha inválidos.'}, 401 # Generate token user = get_user_by_email(data['email']) token = Log.generate_token( { 'sub': user.uuid, 'name': user.name, 'exp': datetime.datetime.utcnow() + datetime.timedelta(minutes=30) }, app.config['SECRET_KEY']) log = Log(user, token) # Registering login session.add(log) session.commit() # User logged in successfully return { 'id': user.uuid, 'email': user.email, 'data_criacao': user.creation_date.isoformat(), 'data_atualizacao': user.update_date.isoformat(), 'ultimo_login': user_last_login(user.email).date.isoformat(), 'token': token.decode('UTF-8') }, 201
def post(self): """ Registers user on database with JSON object data. Headers: Content-Type: application/json JSON Request format: { "nome": nome, "email": email, "senha": senha, "telefones": [ { "numero": numero, "ddd": ddd }, ... ] } """ data = sign_up_parser.parse_args() # Validate email if re.match("^[\w.]+@[\w]+\.[\w]+$", data.email) is None: return { 'mensagem': '{} não é um email válido.'.format(data.email) }, 400 # Email already registered if email_exists(data.email): return { 'mensagem': '{} já foi registrado.'.format(data.email) }, 400 # Validate phone numbers for phone in data['telefones']: if num.match(phone['numero']) is None or num.match( phone['ddd']) is None: return { 'mensagem': '{} {} não é um numero de telefone válido.'.format( phone['ddd'], phone['numero']) }, 400 # Create user ORM user = User(data['nome'], data['email'], User.generate_hash(data['senha'])) user.phones = [ Phone(phone['numero'], phone['ddd']) for phone in data['telefones'] ] # Generate token token = Log.generate_token( { 'sub': user.uuid, 'name': user.name, 'exp': datetime.datetime.utcnow() + datetime.timedelta(minutes=30) }, app.config['SECRET_KEY']) # Add to database session.add(user) session.add(Log(user, token)) session.commit() # User registered successfully return { 'id': user.uuid, 'email': user.email, 'data_criacao': user.creation_date.isoformat(), 'data_atualizacao': user.update_date.isoformat(), 'ultimo_login': user_last_login(user.email).date.isoformat(), 'token': token.decode('UTF-8') }, 201