Exemplo n.º 1
0
    def boot(self, request: Request, response: Response):
        """Boots services required by the container."""
        headers = config('middleware.cors') or {}
        request.header(headers)

        if request.get_request_method().lower() == 'options':
            response.view('preflight')
Exemplo n.º 2
0
    def sign_in(self, request: Request, response: Response, auth: Auth,
                validate: Validator):

        errors = request.validate(validate.required("email"),
                                  validate.required("password"))

        if errors:
            return errors

        user_auth_res = auth.login(request.input("email"),
                                   request.input("password"))

        if user_auth_res is False:
            return response.json({"error": "Check your credentials"})

        msg = {
            "id": user_auth_res.id,
            "email": user_auth_res.email,
            "name": user_auth_res.name,
            "govId": user_auth_res.gov_id,
            "type": user_auth_res.type,
        }

        enc = utils.encode_message(msg)
        if enc != False:
            return response.json({"access_token": enc.decode("utf-8")})

        return response.json(
            {"error": "You cannot access this system at the time"})
Exemplo n.º 3
0
 def setUp(self):
     self.app = App()
     self.request = Request(generate_wsgi()).load_app(self.app)
     self.app.bind('Request', self.request)
     self.app.bind('StatusCode', None)
     self.response = Response(self.app)
     self.app.bind('Response', self.response)
Exemplo n.º 4
0
    def store(self, view: View, request: Request, auth: Auth,
              response: Response):
        login = auth.attempt(request.input("username"),
                             request.input("password"))

        if login:
            return response.redirect(name="auth.home")

        # Go back to login page
        return response.redirect(name="login").with_errors(
            ["The email or password is incorrect"])
Exemplo n.º 5
0
    def show(self, request: Request, response: Response):
        account_id = request.param("account_id")

        blockchain_data = self.ibc.get_all_account_transactions(account_id)
        blockchain_data = protobuf_to_dict(blockchain_data)
        blockchain_data = utils.format_transaction_data(blockchain_data)

        if blockchain_data is False:
            return response.json({"error": "No such permissions"})

        return response.json({"data": blockchain_data})
    def store(self, request: Request, response: Response, validate: Validator):
        errors = request.validate(
            validate.required("symptoms"),
            validate.required("diagnosis"),
            validate.required("treatment_plan"),
            validate.required("seen_by"),
        )

        if errors:
            return errors

        patient_id = request.param("patient_id")
        patient_record = {
            "author": f"{self.user.gov_id}@afyamkononi",
            "timestamp": calendar.timegm(time.gmtime()),
            "symptoms": request.input("symptoms"),
            "diagnosis": request.input("diagnosis"),
            "treatment_plan": request.input("treatment_plan"),
            "seen_by": request.input("seen_by"),
        }

        patient_account = self.ibc.get_account_details(
            request.param("patient_id"))

        if patient_account.detail == "":
            return response.json({"error": "No such account"})

        unpacked_data = json.loads(patient_account.detail)
        patient_history = utils.filter_medical_data(unpacked_data)

        history_update = []
        if patient_history == []:
            history_update.append(patient_record)
        else:
            history_update += patient_history
            history_update.append(patient_record)

        history_update = utils.remove_duplicates(history_update)

        blockchain_status = self.ibc.set_patient_record(
            User.where("gov_id", patient_id).first(), history_update)
        print(blockchain_status)
        iroha_message = iroha_messages.update_medical_history_failed(
            blockchain_status)
        if iroha_message is not None:
            return response.json(iroha_message)

        return response.json({"success": "Medical data added successfully"})
Exemplo n.º 7
0
 def setUp(self):
     self.app = App()
     self.request = Request(wsgi_request).key(
         'NCTpkICMlTXie5te9nJniMj9aVbPM6lsjeq5iDZ0dqY=').load_app(self.app)
     self.app.bind('Request', self.request)
     self.response = Response(self.app)
     self.app.simple(Response)
Exemplo n.º 8
0
    def update(self, request: Request, response: Response):

        channel = -1
        level = -1
        try:
            print(f' channel 0: {request.all()["0"]}')
            channel = 0
            level = int(request.all()["0"])
        except KeyError:
            try:
                print(f' channel 1: {request.all()["1"]}')
                channel = 1
                level = int(request.all()["1"])
            except KeyError:
                print('channel not found')

        print(f' setting channel: {channel} to value: {level}')

        try:
            set_lights(channel, level)
            message = 'OK'
        except Exception:
            message = 'connection error'

        # return request.all()
        return response.redirect('/')
Exemplo n.º 9
0
    def setUp(self):
        self.app = App()
        self.app.bind('Environ', generate_wsgi())
        self.app.bind('Application', application)
        self.app.make('Environ')
        self.app.bind('StatusCode', None)
        self.app.bind('Request',
                      Request(self.app.make('Environ')).load_app(self.app))
        self.app.simple(Response(self.app))
        self.app.bind('Csrf', Csrf(self.app.make('Request')))
        self.app.bind('Route', Route(self.app.make('Environ')))

        self.app.bind('ViewClass', View(self.app))

        self.app.bind(
            'WebRoutes',
            [Get().route('/', 'TestController@show').middleware('test')])

        self.app.bind('HttpMiddleware', [MiddlewareHttpTest])

        self.app.bind('RouteMiddleware', {
            'test': MiddlewareTest,
            'throttle:1,2': MiddlewareValueTest
        })

        self.provider = RouteProvider()
        self.provider.app = self.app
    def show(self, request: Request, response: Response):
        """
        Retrieve medical records for a patient
        """

        subject = User.where("gov_id", request.param("patient_id")).first()
        if subject is None:
            return response.json({"error": "No such user"})

        requestor_id = f"{self.user.gov_id}@afyamkononi"
        grantor_id = f"{subject.gov_id}@afyamkononi"

        consent_confirm = (Consent.where("requestor_id", requestor_id).where(
            "grantor_id", grantor_id).where("grantor_id", "!=",
                                            requestor_id).first())

        if consent_confirm is None and requestor_id != grantor_id:
            consent = Consent()
            consent.requestor_id = requestor_id
            consent.requestor_name = self.user.name
            consent.grantor_id = grantor_id
            consent.grantor_name = subject.name
            consent.permission = "can_set_my_account_detail"
            consent.save()
            return response.json({
                "error":
                "No such permissions. This owner has been requested to grant permissions."
            })
        elif (consent_confirm is not None
              and consent_confirm.grantor_id != requestor_id
              and consent_confirm.status != "granted"):
            consent_confirm.update(status="pending")
            return response.json({
                "error":
                "No such permissions. This owner has been requested to grant permissions."
            })

        blockchain_data = self.ibc.get_account_details(subject.gov_id,
                                                       "medical_data")
        if blockchain_data.detail == "":
            return response.json({"data": []})

        patient_medical_history = json.loads(blockchain_data.detail)
        filtered_patient_medical_history = utils.filter_medical_data(
            patient_medical_history)
        return response.json({"data": filtered_patient_medical_history})
Exemplo n.º 11
0
    def role_permissions(self, request: Request, response: Response):
        role_id = request.param("role")

        blockchain_data = self.ibc.get_role_permissions(role_id)
        blockchain_data = protobuf_to_dict(
            blockchain_data.role_permissions_response)

        return response.json({"data": blockchain_data})
Exemplo n.º 12
0
    def store(self, auth: Auth, request: Request,
              response: Response):  # store register user
        errors = request.validate({
            "email": "required",
            "name": "required",
            "password": "******",
        })

        if errors:
            return response.back().with_errors(errors)

        user = auth.register(request.only("name", "email", "password"))

        if not user:
            return response.redirect("/register")

        return response.redirect("/home")
 def setUp(self):
     self.app = App()
     self.app.bind('StatusCode', '404 Not Found')
     self.app.bind(
         'Request',
         Request(None).load_app(self.app).load_environ(generate_wsgi()))
     self.app.simple(Response(self.app))
     self.app.bind('ViewClass', View(self.app))
     self.app.bind('View', self.app.make('ViewClass').render)
Exemplo n.º 14
0
    def revoke_edit_permissions(self, request: Request, response: Response):
        subject = User.where("gov_id", request.input("gov_id")).first()
        grantor = User.where("gov_id", request.param("user")).first()

        if subject is None:
            return response.json({"error": "No such user"})
        blockchain_status = self.ibc.revoke_edit_permissions(subject)
        iroha_message = iroha_messages.revoke_set_account_detail_perms_failed(
            blockchain_status)
        if iroha_message is not None:
            return response.json(iroha_message)

        (Consent.where("requestor_id", f"{subject.gov_id}@afyamkononi").where(
            "grantor_id",
            f"{grantor.gov_id}@afyamkononi").update(status="revoked"))

        return response.json(
            {"success": "The requested permissions were revoked"})
Exemplo n.º 15
0
    def user_by_gov_id(self, request: Request, response: Response):

        subject = User.where("gov_id", request.param("user")).first()
        if subject is None:
            return response.json({"error": "No such user"})

        requestor_id = f"{self.user.gov_id}@afyamkononi"
        grantor_id = f"{subject.gov_id}@afyamkononi"

        consent_confirm = (Consent.where("requestor_id", requestor_id).where(
            "grantor_id", grantor_id).first())

        if consent_confirm is None and requestor_id != grantor_id:
            consent = Consent()
            consent.requestor_id = requestor_id
            consent.requestor_name = self.user.name
            consent.grantor_id = grantor_id
            consent.grantor_name = subject.name
            consent.permission = "can_set_my_account_detail"
            consent.save()
            return response.json({
                "error":
                "No such permissions. This owner has been requested to grant permissions."
            })
        elif (consent_confirm is not None
              and consent_confirm.grantor_id != requestor_id
              and consent_confirm.status != "granted"):
            consent_confirm.update(status="pending")
            return response.json({
                "error":
                "No such permissions. This owner has been requested to grant permissions."
            })

        data = self.ibc.get_account_details(subject.gov_id)

        if data.detail == "":
            return response.json({
                "error":
                "No such permissions. This owner has been requested to grant permissions."
            })

        return utils.format_query_result(data)
Exemplo n.º 16
0
    def delete(self, request: Request, response: Response):
        """Logic to delete data from a given model
        """
        if self.before_crud_check(request, response) == False:
            return response.json(None, status=403)

        record = self.model.find(request.param('id'))
        if record:
            record.delete()
            return record

        return {'error': 'Record does not exist'}
    def delete(self, request: Request, response: Response):
        """Logic to delete data from a given model
        """
        if AdminMiddleware(request, response).checkpw_resource() == False:
            return response.json(None, status=403)

        record = self.model.find(request.param('id'))
        if record:
            record.delete()
            return record

        return {'error': 'Record does not exist'}
Exemplo n.º 18
0
 def setup_method(self):
     self.app = App()
     self.app.bind('Application', ApplicationMock)
     self.app.bind('Environ', generate_wsgi())
     self.app.bind('WebRoutes', [])
     self.app.bind('View', View(self.app).render)
     self.app.bind('Request', Request(generate_wsgi()).load_app(self.app))
     self.app.simple(Response(self.app))
     self.app.bind('StatusCode', None)
     self.app.bind('Storage', StorageMock)
     self.app.bind('ExceptionHandler', ExceptionHandler(self.app))
     self.app.bind('HookHandler', Hook(self.app))
     self.app.bind('Request', Request(generate_wsgi()).load_app(self.app))
     self.app.bind('ExceptionAttributeErrorHandler', MockExceptionHandler)
    def update(self, request: Request, response: Response):
        """Logic to update data from a given model
        """
        if AdminMiddleware(request, response).checkpw_resource() == False:
            return response.json(None, status=403)

        record = self.model.where('id', request.param('id'))
        params = request.all()
        del params['login_id'], params['login_token']
        try:
            record.update(params)
        except Exception as e:
            return {'error': str(e)}

        return {
        }  #self.model.where('id', request.param('id')).get().serialize()
Exemplo n.º 20
0
    def register(self):
        self.app.bind('HookHandler', Hook(self.app))
        self.app.bind('WebRoutes', flatten_routes(web.ROUTES))
        self.app.bind('Storage', storage)
        self.app.bind('Route', Route())
        self.app.bind('Request', Request())
        self.app.simple(Response(self.app))
        self.app.bind('Container', self.app)
        self.app.bind('ExceptionHandler', ExceptionHandler(self.app))
        self.app.bind('ExceptionDumpExceptionHandler', DumpHandler)
        self.app.bind('RouteMiddleware', middleware.ROUTE_MIDDLEWARE)
        self.app.bind('HttpMiddleware', middleware.HTTP_MIDDLEWARE)

        # Insert Commands
        self._load_commands()

        self._autoload(application.AUTOLOAD)
Exemplo n.º 21
0
    def redirect(self, response: Response):
        """ Redirect to Google """
        if self.scopes:
            scopes = ' '.join(self.scopes)
        else:
            scopes = ''

        params = dict(
            scope=scopes,
            access_type='offline',
            redirect_uri=self._config['redirect'],
            response_type='code',
            client_id=self._config['client']
        )
        
        endpoint = f'{self.authorization_url}?{urllib.parse.urlencode(params)}'
        return response.redirect(endpoint)
Exemplo n.º 22
0
 def setup_method(self):
     self.app = App()
     self.app.bind('Container', self.app)
     self.app.bind('Environ', generate_wsgi())
     self.app.bind('Application', application)
     self.app.bind('WebRoutes', [])
     self.app.bind('Route', Route(self.app.make('Environ')))
     self.app.bind('Request', Request(
         self.app.make('Environ')).load_app(self.app))
     self.app.simple(Response(self.app))
     self.app.bind('StatusCode', '404 Not Found')
     self.app.bind('HttpMiddleware', middleware.HTTP_MIDDLEWARE)
     view = View(self.app)
     self.app.bind('ViewClass', view)
     self.app.bind('View', view.render)
     self.provider = RouteProvider()
     self.provider.app = self.app
    def index(self, request: Request, response: Response):
        """Logic to read data from several models
        """
        if AdminMiddleware(request, response).checkpw_resource() == False:
            return response.json(None, status=403)

        # pagenagion
        items = request.input('i') if request.input('i') else 10
        page = request.input('p') if request.input('p') else 1
        _offset = items * (page - 1)

        if self.list_display:
            results = self.model.select(
                'id', *self.list_display).offset(_offset).limit(items).get()
            new_results = [result._original for result in results._items]
            return self.arr_iso_format(new_results)
            #return self.model.select('id', *self.list_display).paginate(items, page).serialize()
        else:
            results = self.model.offset(_offset).limit(items).get()
            new_results = [result._original for result in results._items]
            return self.arr_iso_format(new_results)
Exemplo n.º 24
0
 def setUp(self):
     self.app = App()
     self.app.bind('Container', self.app)
     self.app.bind('Environ', generate_wsgi())
     self.app.bind('Application', application)
     self.app.bind('WebRoutes', [])
     self.app.bind('Route', Route(self.app.make('Environ')))
     self.app.bind('Request',
                   Request(self.app.make('Environ')).load_app(self.app))
     self.app.simple(Response(self.app))
     self.app.bind('StatusCode', None)
     self.app.bind('HttpMiddleware', middleware.HTTP_MIDDLEWARE)
     view = View(self.app)
     self.app.bind('ViewClass', view)
     self.app.bind('View', view.render)
     self.app.bind('Auth', Auth)
     self.app.bind('Csrf', Csrf(self.app.make('Request')))
     self.app.bind('AuthCookieDriver', AuthCookieDriver)
     self.app.bind('AuthManager', AuthManager(self.app).driver('cookie'))
     self.provider = RouteProvider()
     self.provider.app = self.app
Exemplo n.º 25
0
    def register(self):
        from routes import web
        self.app.bind('HookHandler', Hook(self.app))
        self.app.bind('WebRoutes', flatten_routes(web.ROUTES))
        self.app.bind('Storage', config('storage'))
        self.app.bind('Route', Route())
        self.app.bind('Request', Request())
        self.app.simple(Response(self.app))
        self.app.bind('Container', self.app)
        self.app.bind('ExceptionHandler', ExceptionHandler(self.app))
        self.app.bind('ExceptionDumpExceptionHandler', DumpHandler)
        self.app.bind('AuthCookieDriver', AuthCookieDriver)
        self.app.bind('AuthJwtDriver', AuthJwtDriver)
        self.app.bind('AuthManager', AuthManager(self.app).driver('cookie'))
        self.app.bind('RouteMiddleware', config('middleware.route_middleware'))
        self.app.bind('HttpMiddleware', config('middleware.http_middleware'))
        self.app.bind('Auth', Auth)

        # Insert Commands
        self._load_commands()

        self._autoload(config('application.autoload'))
    def show(self, request: Request, response: Response):
        """Logic to read data from 1 model
        """
        if AdminMiddleware(request, response).checkpw_resource() == False:
            return response.json(None, status=403)

        if self.detail_display and env('DB_CONNECTION') == 'mysql':
            result = self.model.select(*self.detail_display).find(
                request.param('id'))
            new_result = {i: v for i, v in result._original.items()}
            return self.arr_iso_format(new_result)
        elif self.detail_display:
            if 'id' not in self.detail_display:
                self.detail_display.insert(0, 'id')
            result = self.model.select(*self.detail_display).find(
                request.param('id'))
            new_result = {i: v for i, v in result._original.items()}
            return self.arr_iso_format(new_result)
        else:
            result = self.model.find(request.param('id'))
            new_result = {i: v for i, v in result._original.items()}
            return self.arr_iso_format(new_result)
    def create(self, request: Request, response: Response):
        """Logic to create data from a given model
        """
        if AdminMiddleware(request, response).checkpw_resource() == False:
            return response.json(None, status=403)

        try:
            params = request.all()
            del params['login_id'], params['login_token']
            config_model = AdminController.get_model_row_by_model_name(
                self.model.__doc__.split(' ')[0])
            new_model = self.model()

            for key, value in params.items():
                try:
                    setattr(new_model, key, value)
                except Exception as e:
                    print(e)

            new_model.save()
        except Exception as e:
            return {'error': str(e)}
        return new_model
Exemplo n.º 28
0
 def test_json(self, response: Response):
     return response.json({'test': 'value'})
Exemplo n.º 29
0
 def redirect(self, response: Response):
     return response.redirect('/some/test')
Exemplo n.º 30
0
 def response_int(self, response: Response):
     return response.view(1)