From acf533cdba0dd442e48f5ec09c1ab96d4a50e9d1 Mon Sep 17 00:00:00 2001 From: undefined Date: Tue, 6 Apr 2021 18:06:04 +0800 Subject: [PATCH] =?UTF-8?q?core:=20=E6=B7=BB=E5=8A=A0=E5=8A=A0=E5=9F=9F?= =?UTF-8?q?=E6=88=90=E5=8A=9F=E6=8F=90=E7=A4=BA=20(#87)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/hydrooj/package.json | 2 +- packages/hydrooj/src/handler/domain.ts | 7 ++++++- packages/hydrooj/src/handler/remote.ts | 2 +- packages/hydrooj/src/service/server.ts | 3 +++ .../components/notification/notification.page.js | 7 +++++++ packages/ui-default/package.json | 2 +- 6 files changed, 19 insertions(+), 4 deletions(-) create mode 100644 packages/ui-default/components/notification/notification.page.js diff --git a/packages/hydrooj/package.json b/packages/hydrooj/package.json index 2ea0683e7..c545eeceb 100644 --- a/packages/hydrooj/package.json +++ b/packages/hydrooj/package.json @@ -1,6 +1,6 @@ { "name": "hydrooj", - "version": "2.21.10", + "version": "2.21.11", "bin": "bin/hydrooj.js", "main": "dist/loader.js", "typings": "dist/loader.d.ts", diff --git a/packages/hydrooj/src/handler/domain.ts b/packages/hydrooj/src/handler/domain.ts index 60714dc12..041c4f24d 100644 --- a/packages/hydrooj/src/handler/domain.ts +++ b/packages/hydrooj/src/handler/domain.ts @@ -256,6 +256,11 @@ class DomainJoinApplicationsHandler extends ManageHandler { class DomainJoinHandler extends Handler { joinSettings: any; + constructor(ctx) { + super(ctx); + this.noCheckPermView = true; + } + async prepare() { const r = await domain.getRoles(this.domain); const roles = r.map((role) => role._id); @@ -283,7 +288,7 @@ class DomainJoinHandler extends Handler { } } await domain.setUserRole(this.domain._id, this.user._id, this.joinSettings.role); - this.response.redirect = this.url('domain_main'); + this.response.redirect = this.url('domain_main', { query: { notification: 'Successfully joined domain.' } }); } } diff --git a/packages/hydrooj/src/handler/remote.ts b/packages/hydrooj/src/handler/remote.ts index c147b4eae..6df671289 100644 --- a/packages/hydrooj/src/handler/remote.ts +++ b/packages/hydrooj/src/handler/remote.ts @@ -3,6 +3,7 @@ import superagent from 'superagent'; import { PassThrough } from 'stream'; import { PermissionError, InvalidTokenError, RemoteOnlineJudgeError } from '../error'; import { Logger } from '../logger'; +import { logAndReturn } from '../utils'; import { ProblemAdd } from '../lib/ui'; import { PERM } from '../model/builtin'; import token from '../model/token'; @@ -12,7 +13,6 @@ import { Handler, Types, Route, post, } from '../service/server'; import storage from '../service/storage'; -import { logAndReturn } from '../utils'; const logger = new Logger('remote'); diff --git a/packages/hydrooj/src/service/server.ts b/packages/hydrooj/src/service/server.ts index 2a564b6ab..7e45a22ee 100644 --- a/packages/hydrooj/src/service/server.ts +++ b/packages/hydrooj/src/service/server.ts @@ -381,6 +381,7 @@ export class Handler extends HandlerCommon { csrfToken: string; loginMethods: any; + noCheckPermView: boolean; __param: Record; constructor(ctx: Koa.Context) { @@ -424,6 +425,7 @@ export class Handler extends HandlerCommon { this.session = {}; const xff = system.get('server.xff'); if (xff) this.request.ip = this.request.headers[xff.toLowerCase()] || this.request.ip; + this.noCheckPermView = true; } // eslint-disable-next-line class-methods-use-this @@ -494,6 +496,7 @@ export class Handler extends HandlerCommon { icon: global.Hydro.lib[key].icon, text: global.Hydro.lib[key].text, })); + if (!this.noCheckPermView) this.checkPerm(PERM.PERM_VIEW); } async finish() { diff --git a/packages/ui-default/components/notification/notification.page.js b/packages/ui-default/components/notification/notification.page.js new file mode 100644 index 000000000..03fd4922c --- /dev/null +++ b/packages/ui-default/components/notification/notification.page.js @@ -0,0 +1,7 @@ +import { AutoloadPage } from 'vj/misc/Page'; +import Notification from 'vj/components/notification/index'; + +export default new AutoloadPage('notificationPage', () => { + const text = new URL(window.location.href).searchParams.get('notification'); + if (text) new Notification(text).show(); +}); diff --git a/packages/ui-default/package.json b/packages/ui-default/package.json index 502fbdec8..c6be4a201 100644 --- a/packages/ui-default/package.json +++ b/packages/ui-default/package.json @@ -1,6 +1,6 @@ { "name": "@hydrooj/ui-default", - "version": "4.5.8", + "version": "4.5.9", "author": "undefined ", "license": "AGPL-3.0", "main": "hydro.js",