Exemple #1
0
"""Web Routes."""

from masonite.routes import Get, Post

ROUTES = [
    Get().route('/', 'WelcomeController@show').name('welcome'),
]

from masonite.auth import Auth 
ROUTES += Auth.routes()
Exemple #2
0
 def show(self):
     ''' Show the login page '''
     return view('auth/login', {
         'app': application,
         'Auth': Auth(self.request)
     })
Exemple #3
0
 def reset_method(self):
     self.auth = Auth(self.request, MockUser())
Exemple #4
0
    def show(self, request: Request, view: View):
        """Show the registration page.

        Arguments:
            Request {masonite.request.request} -- The Masonite request class.

        Returns:
            masonite.view.View -- The Masonite View class.
        """
        return view.render('auth/register', {'app': request.app().make('Application'), 'Auth': Auth(request)})
Exemple #5
0
class TestAuth:
    def setup_method(self):
        self.container = App()
        self.app = self.container
        view = View(self.container)
        self.request = Request(generate_wsgi())
        self.auth = Auth(self.request, MockUser())
        self.container.bind('View', view.render)
        self.container.bind('ViewClass', view)
        self.app.bind('Application', application)

    def reset_method(self):
        self.auth = Auth(self.request, MockUser())

    def test_auth(self):
        assert self.auth

    def test_login_user(self):
        assert isinstance(self.auth.login('*****@*****.**', 'secret'),
                          MockUser)
        assert self.request.get_cookie('token')

    def test_login_user_with_list_auth_column(self):
        user = MockUser
        user.__auth__ = ['email', 'name']
        assert isinstance(self.auth.login('testuser123', 'secret'), user)
        assert self.request.get_cookie('token')

    def test_get_user(self):
        assert self.auth.login_by_id(1)
        assert isinstance(self.auth.user(), MockUser)

    def test_get_user_returns_false_if_not_loggedin(self):
        self.auth.login('*****@*****.**', 'wrong_secret')
        assert self.auth.user() is False

    def test_logout_user(self):
        assert isinstance(self.auth.login('*****@*****.**', 'secret'),
                          MockUser)
        assert self.request.get_cookie('token')

        self.auth.logout()
        assert not self.request.get_cookie('token')
        assert not self.auth.user()

    def test_login_user_fails(self):
        assert self.auth.login('*****@*****.**', 'bad_password') is False

    def test_login_by_id(self):
        assert isinstance(self.auth.login_by_id(1), MockUser)
        assert self.request.get_cookie('token')

        assert self.auth.login_by_id(2) is False

    def test_login_once_does_not_set_cookie(self):
        assert isinstance(self.auth.once().login_by_id(1), MockUser)
        assert self.request.get_cookie('token') is None

    def test_user_is_mustverify_instance(self):
        self.auth = Auth(self.request, MockVerifyUser())
        assert isinstance(self.auth.once().login_by_id(1), MustVerifyEmail)
        self.reset_method()
        assert not isinstance(self.auth.once().login_by_id(1), MustVerifyEmail)

    def get_user(self, id):
        return MockVerifyUser()

    def test_confirm_controller_success(self):
        self.auth = Auth(self.request, MockVerifyUser())
        params = {'id': Sign().sign('{0}::{1}'.format(1, time.time()))}
        self.request.set_params(params)
        user = self.auth.once().login_by_id(1)
        self.request.set_user(user)

        self.app.bind('Request', self.request)
        self.app.make('Request').load_app(self.app)

        # Create the route
        route = get('/email/verify/@id', ConfirmController.confirm_email)

        ConfirmController.get_user = self.get_user

        # Resolve the controller constructor
        controller = self.app.resolve(route.controller)

        # Resolve the method
        response = self.app.resolve(
            getattr(controller, route.controller_method))
        self.reset_method()

        assert response.rendered_template == 'confirm'

    def test_confirm_controller_failure(self):
        self.auth = Auth(self.request, MockVerifyUser())

        timestamp_plus_11 = datetime.datetime.now() - datetime.timedelta(
            minutes=11)
        print(timestamp_plus_11.timestamp())

        params = {
            'id': Sign().sign('{0}::{1}'.format(1,
                                                timestamp_plus_11.timestamp()))
        }
        self.request.set_params(params)
        user = self.auth.once().login_by_id(1)
        self.request.set_user(user)

        self.app.bind('Request', self.request)
        self.app.make('Request').load_app(self.app)

        # Create the route
        route = get('/email/verify/@id', ConfirmController.confirm_email)

        ConfirmController.get_user = self.get_user

        # Resolve the controller constructor
        controller = self.app.resolve(route.controller)

        # Resolve the method
        response = self.app.resolve(
            getattr(controller, route.controller_method))
        self.reset_method()

        assert response.rendered_template == 'error'
Exemple #6
0
 def test_user_is_mustverify_instance(self):
     self.auth = Auth(self.request, MockVerifyUser())
     assert isinstance(self.auth.once().login_by_id(1), MustVerifyEmail)
     self.reset_method()
     assert not isinstance(self.auth.once().login_by_id(1), MustVerifyEmail)
Exemple #7
0
 def load_user(self, request):
     ''' Load user into the request '''
     request.set_user(Auth(request).user())
    def createDemoAccounts(self, request:Request, auth:Auth):
        user_id = auth.user().id
        name = request.input('name')
        if name == "":
            return 0

        providers = [
                    'outlook',
                    'apple',
                    'gmail',
                    'yahoo',
                    'office365'
                    ]

        for provider in providers:
            fake_email = name + '@' + provider + '.com'
            type='connect_email'
            # check if this type of connection has been completed before by the email address
            the_account = Account.where('user_id', user_id).where('email', fake_email).where('type', type).first()

            if the_account is None:
                account = Account()
                account.user_id = user_id
                account.access_token = 'demo_so_doesnt_matter'
                account.email = fake_email
                account.provider = provider
                account.nylas_account_id = 'demo_so_doesnt_matter'
                account.scopes = 'demo_so_doesnt_matter'
                account.type = type
                account.valid = bool(random.getrandbits(1))
                account.save()

        for provider in providers:
            fake_email = name + '@' + provider + '.com'
            type = 'connect_calendar'
            the_account = Account.where('user_id', user_id).where('email', fake_email).where('type', type).first()

            if provider == 'yahoo':
                continue

            if the_account is None:
                account = Account()
                account.user_id = user_id
                account.access_token = 'demo_so_doesnt_matter'
                account.email = fake_email
                account.provider = provider
                account.nylas_account_id = 'demo_so_doesnt_matter'
                account.scopes = 'demo_so_doesnt_matter'
                account.type = type
                account.valid = bool(random.getrandbits(1))
                account.save()
        #
        for provider in providers:

            fake_email = name + '@' + provider + '.com'
            type = 'connect_contact'
            the_account = Account.where('user_id', user_id).where('email', fake_email).where('type', type).first()

            if the_account is None:
                account = Account()
                account.user_id = user_id
                account.access_token = 'demo_so_doesnt_matter'
                account.email = fake_email
                account.provider = provider
                account.nylas_account_id = 'demo_so_doesnt_matter'
                account.scopes = 'demo_so_doesnt_matter'
                account.type = type
                account.valid = bool(random.getrandbits(1))
                account.save()

        return True
Exemple #9
0
 def show(self, request: Request, view: View, auth: Auth):
     if not auth.user():
         request.redirect("/login")
     return view.render("auth/home")