Esempio n. 1
0
 def decorated_function(*args, **kwargs):
     if not request.authorization:
         return abort(400)
     auth = request.authorization
     # Check user
     user = User.query.filter(User.email == auth.username, User.password == auth.password).first()
     if not user:
         return abort(400)
     g.user = user
     # Device allowed?
     device = Device.query.filter(Device.user_id == user.id, Device.device == get_device()).first()
     if not device or not device.active:
         if not device:
             device = Device(user.id, get_device())
             db.session.add(device)
             db.session.commit()
         if send_device_authentication(device):
             return Response(json.dumps({"device": device.device, "id": device.id}), 400, content_type='application/json')
         return Response(json.dumps({"message": "I'm a little tea pot."}), 404, content_type='application/json')
     # Log ip
     ip = get_ip()
     login = Login.query.filter(Login.user_id == user.id, Login.ip == ip).first()
     if not login:
         login = Login(user.id, ip)
         gi = pygeoip.GeoIP('GeoLiteCity.dat').record_by_addr(ip)
         if gi:
             login.latitude = gi.get('latitude', 0)
             login.longitude = gi.get('longitude', 0)
         db.session.add(login)
     else:
         login.time = datetime.now()
     db.session.commit()
     return f(*args, **kwargs)