"""Web Routes.""" from masonite.routes import Get, Post ROUTES = [ Get().route('/', 'WelcomeController@show').name('welcome'), ] from masonite.auth import Auth ROUTES += Auth.routes()
def show(self): ''' Show the login page ''' return view('auth/login', { 'app': application, 'Auth': Auth(self.request) })
def reset_method(self): self.auth = Auth(self.request, MockUser())
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)})
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'
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 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
def show(self, request: Request, view: View, auth: Auth): if not auth.user(): request.redirect("/login") return view.render("auth/home")