예제 #1
0
 async def get(self, *args, **kwargs):
     if is_ip_whitelisted(self.request.remote_ip):
         return self.redirect("{}".format(self.get_argument('next', "/{}/".format(sickrage.app.config.default_page))))
     elif sickrage.app.config.sso_auth_enabled and sickrage.app.auth_server.health:
         await self.run_in_executor(self.handle_sso_auth_get)
     elif sickrage.app.config.local_auth_enabled:
         await self.run_in_executor(self.handle_local_auth_get)
     else:
         return self.render('login_failed.mako',
                            topmenu="system",
                            header="SiCKRAGE Login Failed",
                            title="SiCKRAGE Login Failed",
                            controller='root',
                            action='login')
예제 #2
0
 def get(self, *args, **kwargs):
     if is_ip_whitelisted(self.request.remote_ip):
         return self.redirect("{}".format(
             self.get_argument(
                 'next', "/{}/".format(
                     sickrage.app.config.general.default_page.value))))
     elif 'Authorization' in self.request.headers:
         return self.handle_jwt_auth_get()
     elif sickrage.app.config.general.sso_auth_enabled and sickrage.app.auth_server.health:
         return self.handle_sso_auth_get()
     elif sickrage.app.config.general.local_auth_enabled:
         return self.handle_local_auth_get()
     else:
         return self.render('login_failed.mako',
                            topmenu="system",
                            header="SiCKRAGE Login Failed",
                            title="SiCKRAGE Login Failed",
                            controller='root',
                            action='login')
예제 #3
0
파일: base.py 프로젝트: vdaular/SiCKRAGE
    def get_current_user(self):
        if is_ip_whitelisted(self.request.remote_ip):
            return True
        elif sickrage.app.config.general.sso_auth_enabled and sickrage.app.auth_server.health:
            try:
                access_token = self.get_secure_cookie('_sr_access_token')
                refresh_token = self.get_secure_cookie('_sr_refresh_token')
                if not all([access_token, refresh_token]):
                    return

                certs = sickrage.app.auth_server.certs()
                if not certs:
                    return

                try:
                    return sickrage.app.auth_server.decode_token(
                        access_token.decode("utf-8"), certs)
                except (KeycloakClientError, ExpiredSignatureError):
                    token = sickrage.app.auth_server.refresh_token(
                        refresh_token.decode("utf-8"))
                    if not token:
                        return

                    self.set_secure_cookie('_sr_access_token',
                                           token['access_token'])
                    self.set_secure_cookie('_sr_refresh_token',
                                           token['refresh_token'])
                    return sickrage.app.auth_server.decode_token(
                        token['access_token'], certs)
            except Exception as e:
                return
        elif sickrage.app.config.general.local_auth_enabled:
            cookie = self.get_secure_cookie(
                '_sr').decode() if self.get_secure_cookie('_sr') else None
            if cookie == sickrage.app.config.general.api_v1_key:
                return True