def get(self, user_id): """ .. http:get:: /users/1 Get a specific user **Example request**: .. sourcecode:: http GET /users/1 HTTP/1.1 Host: example.com Accept: application/json, text/javascript **Example response**: .. sourcecode:: http HTTP/1.1 200 OK Vary: Accept Content-Type: text/javascript { "id": 1, "active": false, "email": "*****@*****.**", "username": "******", "profileImage": null } :reqheader Authorization: OAuth token to authenticate :statuscode 200: no error """ return service.get(user_id)
def on_identity_loaded(sender, identity): """ Sets the identity of a given option, assigns additional permissions based on the role that the user is a part of. :param sender: :param identity: """ # load the user user = user_service.get(identity.id) # add the UserNeed to the identity identity.provides.add(UserNeed(identity.id)) # identity with the roles that the user provides if hasattr(user, 'roles'): for role in user.roles: identity.provides.add(RoleNeed(role.name)) identity.provides.add(RoleMemberNeed(role.id)) # apply ownership for authorities if hasattr(user, 'authorities'): for authority in user.authorities: identity.provides.add(AuthorityCreatorNeed(authority.id)) g.user = user
def decorated_function(*args, **kwargs): if not request.headers.get('Authorization'): response = jsonify(message='Missing authorization header') response.status_code = 401 return response try: token = request.headers.get('Authorization').split()[1] except Exception as e: return dict(message='Token is invalid'), 403 try: payload = jwt.decode(token, current_app.config['LEMUR_TOKEN_SECRET']) except jwt.DecodeError: return dict(message='Token is invalid'), 403 except jwt.ExpiredSignatureError: return dict(message='Token has expired'), 403 except jwt.InvalidTokenError: return dict(message='Token is invalid'), 403 g.current_user = user_service.get(payload['sub']) if not g.current_user: return dict(message='You are not logged in'), 403 # Tell Flask-Principal the identity changed identity_changed.send(current_app._get_current_object(), identity=Identity(g.current_user.id)) return f(*args, **kwargs)
def on_identity_loaded(sender, identity): """ Sets the identity of a given option, assigns additional permissions based on the role that the user is a part of. :param sender: :param identity: """ # load the user user = user_service.get(identity.id) # add the UserNeed to the identity identity.provides.add(UserNeed(identity.id)) # identity with the roles that the user provides if hasattr(user, 'roles'): for role in user.roles: identity.provides.add(ViewRoleCredentialsNeed(role.name)) identity.provides.add(RoleNeed(role.name)) # apply ownership for authorities if hasattr(user, 'authorities'): for authority in user.authorities: identity.provides.add(AuthorityCreatorNeed(authority.id)) # apply ownership of certificates if hasattr(user, 'certificates'): for certificate in user.certificates: identity.provides.add(CertificateCreatorNeed(certificate.id)) g.user = user
def decorated_function(*args, **kwargs): if not request.headers.get("Authorization"): response = jsonify(message="Missing authorization header") response.status_code = 401 return response try: token = request.headers.get("Authorization").split()[1] except Exception as e: return dict(message="Token is invalid"), 403 try: header_data = fetch_token_header(token) payload = jwt.decode(token, current_app.config["LEMUR_TOKEN_SECRET"], algorithms=[header_data["alg"]]) except jwt.DecodeError: return dict(message="Token is invalid"), 403 except jwt.ExpiredSignatureError: return dict(message="Token has expired"), 403 except jwt.InvalidTokenError: return dict(message="Token is invalid"), 403 if "aid" in payload: access_key = api_key_service.get(payload["aid"]) if access_key.revoked: return dict(message="Token has been revoked"), 403 if access_key.ttl != -1: current_time = datetime.utcnow() # API key uses days expired_time = datetime.fromtimestamp( access_key.issued_at) + timedelta(days=access_key.ttl) if current_time >= expired_time: return dict(message="Token has expired"), 403 if access_key.application_name: g.caller_application = access_key.application_name user = user_service.get(payload["sub"]) if not user.active: return dict(message="User is not currently active"), 403 g.current_user = user if not g.current_user: return dict(message="You are not logged in"), 403 # Tell Flask-Principal the identity changed identity_changed.send(current_app._get_current_object(), identity=Identity(g.current_user.id)) return f(*args, **kwargs)
def decorated_function(*args, **kwargs): if not request.headers.get('Authorization'): response = jsonify(message='Missing authorization header') response.status_code = 401 return response try: token = request.headers.get('Authorization').split()[1] except Exception as e: return dict(message='Token is invalid'), 403 try: payload = jwt.decode(token, current_app.config['LEMUR_TOKEN_SECRET']) except jwt.DecodeError: return dict(message='Token is invalid'), 403 except jwt.ExpiredSignatureError: return dict(message='Token has expired'), 403 except jwt.InvalidTokenError: return dict(message='Token is invalid'), 403 if 'aid' in payload: access_key = api_key_service.get(payload['aid']) if access_key.revoked: return dict(message='Token has been revoked'), 403 if access_key.ttl != -1: current_time = datetime.utcnow() expired_time = datetime.fromtimestamp(access_key.issued_at + access_key.ttl) if current_time >= expired_time: return dict(message='Token has expired'), 403 user = user_service.get(payload['sub']) if not user.active: return dict(message='User is not currently active'), 403 g.current_user = user if not g.current_user: return dict(message='You are not logged in'), 403 # Tell Flask-Principal the identity changed identity_changed.send(current_app._get_current_object(), identity=Identity(g.current_user.id)) return f(*args, **kwargs)