From c5108da67b5f52b5abfc683f1d31dc780aa8d003 Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Wed, 10 Jul 2019 22:10:10 -0600 Subject: [PATCH] Rename MSC things to be Matrix things --- src/api/Webserver.ts | 6 +++--- src/api/admin/AdminAppserviceService.ts | 10 +++++----- src/api/admin/AdminCustomSimpleBotService.ts | 14 ++++++------- src/api/admin/AdminGitterService.ts | 12 +++++------ src/api/admin/AdminIntegrationsService.ts | 8 ++++---- src/api/admin/AdminIrcService.ts | 12 +++++------ src/api/admin/AdminNebService.ts | 16 +++++++-------- src/api/admin/AdminService.ts | 12 +++++------ src/api/admin/AdminSlackService.ts | 12 +++++------ src/api/admin/AdminStickerService.ts | 8 ++++---- src/api/admin/AdminTelegramService.ts | 12 +++++------ src/api/admin/AdminTermsService.ts | 12 +++++------ src/api/admin/AdminUpstreamService.ts | 6 +++--- src/api/admin/AdminWebhooksService.ts | 12 +++++------ src/api/controllers/AccountController.ts | 6 +++--- src/api/controllers/TermsController.ts | 8 ++++---- src/api/dimension/DimensionGitterService.ts | 8 ++++---- .../dimension/DimensionIntegrationsService.ts | 10 +++++----- src/api/dimension/DimensionIrcService.ts | 8 ++++---- src/api/dimension/DimensionSlackService.ts | 12 +++++------ src/api/dimension/DimensionStickerService.ts | 10 +++++----- src/api/dimension/DimensionTelegramService.ts | 8 ++++---- src/api/dimension/DimensionWebhooksService.ts | 8 ++++---- .../MatrixAccountService.ts} | 10 +++++----- .../MatrixTermsService.ts} | 8 ++++---- src/api/scalar/ScalarService.ts | 10 +++++----- src/api/scalar/ScalarWidgetService.ts | 4 ++-- .../{MSCSecurity.ts => MatrixSecurity.ts} | 20 +++++++++---------- web/app/shared/services/authed-api.ts | 4 ++-- 29 files changed, 143 insertions(+), 143 deletions(-) rename src/api/{msc/MSCAccountService.ts => matrix/MatrixAccountService.ts} (83%) rename src/api/{msc/MSCTermsService.ts => matrix/MatrixTermsService.ts} (86%) rename src/api/security/{MSCSecurity.ts => MatrixSecurity.ts} (89%) diff --git a/src/api/Webserver.ts b/src/api/Webserver.ts index 33e5362..f22f104 100644 --- a/src/api/Webserver.ts +++ b/src/api/Webserver.ts @@ -7,7 +7,7 @@ import { Server } from "typescript-rest"; import * as _ from "lodash"; import config from "../config"; import { ApiError } from "./ApiError"; -import MSCSecurity from "./security/MSCSecurity"; +import MatrixSecurity from "./security/MatrixSecurity"; /** * Web server for Dimension. Handles the API routes for the admin, scalar, dimension, and matrix APIs. @@ -26,10 +26,10 @@ export default class Webserver { private loadRoutes() { // TODO: Rename services to controllers, and controllers to services. They're backwards. - const apis = ["scalar", "dimension", "admin", "matrix", "msc"].map(a => path.join(__dirname, a, "*.js")); + const apis = ["scalar", "dimension", "admin", "matrix"].map(a => path.join(__dirname, a, "*.js")); const router = express.Router(); Server.useIoC(); - Server.registerAuthenticator(new MSCSecurity()); + Server.registerAuthenticator(new MatrixSecurity()); apis.forEach(a => Server.loadServices(router, [a])); const routes = _.uniq(router.stack.map(r => r.route.path)); for (const route of routes) { diff --git a/src/api/admin/AdminAppserviceService.ts b/src/api/admin/AdminAppserviceService.ts index 78fb642..8a748d0 100644 --- a/src/api/admin/AdminAppserviceService.ts +++ b/src/api/admin/AdminAppserviceService.ts @@ -4,7 +4,7 @@ import { AppserviceStore } from "../../db/AppserviceStore"; import { ApiError } from "../ApiError"; import { MatrixAppserviceClient } from "../../matrix/MatrixAppserviceClient"; import { LogService } from "matrix-js-snippets"; -import { ROLE_MSC_ADMIN, ROLE_MSC_USER } from "../security/MSCSecurity"; +import { ROLE_ADMIN, ROLE_USER } from "../security/MatrixSecurity"; interface AppserviceResponse { id: string; @@ -28,14 +28,14 @@ export class AdminAppserviceService { @GET @Path("all") - @Security([ROLE_MSC_USER, ROLE_MSC_ADMIN]) + @Security([ROLE_USER, ROLE_ADMIN]) public async getAppservices(): Promise { return (await AppService.findAll()).map(a => this.mapAppservice(a)); } @GET @Path(":appserviceId") - @Security([ROLE_MSC_USER, ROLE_MSC_ADMIN]) + @Security([ROLE_USER, ROLE_ADMIN]) public async getAppservice(@PathParam("appserviceId") asId: string): Promise { try { const appservice = await AppserviceStore.getAppservice(asId); @@ -48,7 +48,7 @@ export class AdminAppserviceService { @POST @Path("new") - @Security([ROLE_MSC_USER, ROLE_MSC_ADMIN]) + @Security([ROLE_USER, ROLE_ADMIN]) public async createAppservice(request: AppserviceCreateRequest): Promise { const userId = this.context.request.user.userId; @@ -69,7 +69,7 @@ export class AdminAppserviceService { @POST @Path(":appserviceId/test") - @Security([ROLE_MSC_USER, ROLE_MSC_ADMIN]) + @Security([ROLE_USER, ROLE_ADMIN]) public async test(@PathParam("appserviceId") asId: string): Promise { const appservice = await AppserviceStore.getAppservice(asId); const client = new MatrixAppserviceClient(appservice); diff --git a/src/api/admin/AdminCustomSimpleBotService.ts b/src/api/admin/AdminCustomSimpleBotService.ts index 59bc1bd..c9534ff 100644 --- a/src/api/admin/AdminCustomSimpleBotService.ts +++ b/src/api/admin/AdminCustomSimpleBotService.ts @@ -3,7 +3,7 @@ import { ApiError } from "../ApiError"; import { LogService } from "matrix-js-snippets"; import { BotStore } from "../../db/BotStore"; import { Cache, CACHE_INTEGRATIONS } from "../../MemoryCache"; -import { ROLE_MSC_ADMIN, ROLE_MSC_USER } from "../security/MSCSecurity"; +import { ROLE_ADMIN, ROLE_USER } from "../security/MatrixSecurity"; interface BotResponse extends BotRequest { id: number; @@ -36,14 +36,14 @@ export class AdminCustomSimpleBotService { @GET @Path("all") - @Security([ROLE_MSC_USER, ROLE_MSC_ADMIN]) + @Security([ROLE_USER, ROLE_ADMIN]) public async getBots(): Promise { return BotStore.getCustomBots(); } @GET @Path(":botId") - @Security([ROLE_MSC_USER, ROLE_MSC_ADMIN]) + @Security([ROLE_USER, ROLE_ADMIN]) public async getBot(@PathParam("botId") botId: number): Promise { const bot = await BotStore.getCustomBot(botId); if (!bot) throw new ApiError(404, "Bot not found"); @@ -52,7 +52,7 @@ export class AdminCustomSimpleBotService { @POST @Path("new") - @Security([ROLE_MSC_USER, ROLE_MSC_ADMIN]) + @Security([ROLE_USER, ROLE_ADMIN]) public async createBot(request: BotRequest): Promise { const userId = this.context.request.user.userId; const bot = await BotStore.createCustom(request); @@ -63,7 +63,7 @@ export class AdminCustomSimpleBotService { @POST @Path(":botId") - @Security([ROLE_MSC_USER, ROLE_MSC_ADMIN]) + @Security([ROLE_USER, ROLE_ADMIN]) public async updateBot(@PathParam("botId") botId: number, request: BotRequest): Promise { const userId = this.context.request.user.userId; const bot = await BotStore.updateCustom(botId, request); @@ -74,7 +74,7 @@ export class AdminCustomSimpleBotService { @DELETE @Path(":botId") - @Security([ROLE_MSC_USER, ROLE_MSC_ADMIN]) + @Security([ROLE_USER, ROLE_ADMIN]) public async deleteBot(@PathParam("botId") botId: number): Promise { const userId = this.context.request.user.userId; await BotStore.deleteCustom(botId); @@ -85,7 +85,7 @@ export class AdminCustomSimpleBotService { @GET @Path("profile/:userId") - @Security([ROLE_MSC_USER, ROLE_MSC_ADMIN]) + @Security([ROLE_USER, ROLE_ADMIN]) public async getProfile(@PathParam("userId") userId: string): Promise { const profile = await BotStore.getProfile(userId); return {name: profile.displayName, avatarUrl: profile.avatarMxc}; diff --git a/src/api/admin/AdminGitterService.ts b/src/api/admin/AdminGitterService.ts index 639fbae..8680276 100644 --- a/src/api/admin/AdminGitterService.ts +++ b/src/api/admin/AdminGitterService.ts @@ -4,7 +4,7 @@ import { LogService } from "matrix-js-snippets"; import { ApiError } from "../ApiError"; import GitterBridgeRecord from "../../db/models/GitterBridgeRecord"; import Upstream from "../../db/models/Upstream"; -import { ROLE_MSC_ADMIN, ROLE_MSC_USER } from "../security/MSCSecurity"; +import { ROLE_ADMIN, ROLE_USER } from "../security/MatrixSecurity"; interface CreateWithUpstream { upstreamId: number; @@ -32,7 +32,7 @@ export class AdminGitterService { @GET @Path("all") - @Security([ROLE_MSC_USER, ROLE_MSC_ADMIN]) + @Security([ROLE_USER, ROLE_ADMIN]) public async getBridges(): Promise { const bridges = await GitterBridgeRecord.findAll(); return Promise.all(bridges.map(async b => { @@ -47,7 +47,7 @@ export class AdminGitterService { @GET @Path(":bridgeId") - @Security([ROLE_MSC_USER, ROLE_MSC_ADMIN]) + @Security([ROLE_USER, ROLE_ADMIN]) public async getBridge(@PathParam("bridgeId") bridgeId: number): Promise { const telegramBridge = await GitterBridgeRecord.findByPk(bridgeId); if (!telegramBridge) throw new ApiError(404, "Gitter Bridge not found"); @@ -62,7 +62,7 @@ export class AdminGitterService { @POST @Path(":bridgeId") - @Security([ROLE_MSC_USER, ROLE_MSC_ADMIN]) + @Security([ROLE_USER, ROLE_ADMIN]) public async updateBridge(@PathParam("bridgeId") bridgeId: number, request: CreateSelfhosted): Promise { const userId = this.context.request.user.userId; const bridge = await GitterBridgeRecord.findByPk(bridgeId); @@ -80,7 +80,7 @@ export class AdminGitterService { @POST @Path("new/upstream") - @Security([ROLE_MSC_USER, ROLE_MSC_ADMIN]) + @Security([ROLE_USER, ROLE_ADMIN]) public async newConfigForUpstream(request: CreateWithUpstream): Promise { const userId = this.context.request.user.userId; const upstream = await Upstream.findByPk(request.upstreamId); @@ -99,7 +99,7 @@ export class AdminGitterService { @POST @Path("new/selfhosted") - @Security([ROLE_MSC_USER, ROLE_MSC_ADMIN]) + @Security([ROLE_USER, ROLE_ADMIN]) public async newSelfhosted(request: CreateSelfhosted): Promise { const userId = this.context.request.user.userId; const bridge = await GitterBridgeRecord.create({ diff --git a/src/api/admin/AdminIntegrationsService.ts b/src/api/admin/AdminIntegrationsService.ts index 7c7b7e4..2bba8b4 100644 --- a/src/api/admin/AdminIntegrationsService.ts +++ b/src/api/admin/AdminIntegrationsService.ts @@ -6,7 +6,7 @@ import { Cache, CACHE_INTEGRATIONS } from "../../MemoryCache"; import { Integration } from "../../integrations/Integration"; import { LogService } from "matrix-js-snippets"; import { BridgeStore } from "../../db/BridgeStore"; -import { ROLE_MSC_ADMIN, ROLE_MSC_USER } from "../security/MSCSecurity"; +import { ROLE_ADMIN, ROLE_USER } from "../security/MatrixSecurity"; interface SetEnabledRequest { enabled: boolean; @@ -28,7 +28,7 @@ export class AdminIntegrationsService { @POST @Path(":category/:type/options") - @Security([ROLE_MSC_USER, ROLE_MSC_ADMIN]) + @Security([ROLE_USER, ROLE_ADMIN]) public async setOptions(@PathParam("category") category: string, @PathParam("type") type: string, body: SetOptionsRequest): Promise { const userId = this.context.request.user.userId; @@ -43,7 +43,7 @@ export class AdminIntegrationsService { @POST @Path(":category/:type/enabled") - @Security([ROLE_MSC_USER, ROLE_MSC_ADMIN]) + @Security([ROLE_USER, ROLE_ADMIN]) public async setEnabled(@PathParam("category") category: string, @PathParam("type") type: string, body: SetEnabledRequest): Promise { const userId = this.context.request.user.userId; @@ -58,7 +58,7 @@ export class AdminIntegrationsService { @GET @Path(":category/all") - @Security([ROLE_MSC_USER, ROLE_MSC_ADMIN]) + @Security([ROLE_USER, ROLE_ADMIN]) public async getAllIntegrations(@PathParam("category") category: string): Promise { const userId = this.context.request.user.userId; diff --git a/src/api/admin/AdminIrcService.ts b/src/api/admin/AdminIrcService.ts index 181a152..2d03070 100644 --- a/src/api/admin/AdminIrcService.ts +++ b/src/api/admin/AdminIrcService.ts @@ -6,7 +6,7 @@ import IrcBridgeRecord from "../../db/models/IrcBridgeRecord"; import { AvailableNetworks, IrcBridge } from "../../bridges/IrcBridge"; import Upstream from "../../db/models/Upstream"; import IrcBridgeNetwork from "../../db/models/IrcBridgeNetwork"; -import { ROLE_MSC_ADMIN, ROLE_MSC_USER } from "../security/MSCSecurity"; +import { ROLE_ADMIN, ROLE_USER } from "../security/MatrixSecurity"; interface CreateWithUpstream { upstreamId: number; @@ -40,7 +40,7 @@ export class AdminIrcService { @GET @Path("all") - @Security([ROLE_MSC_USER, ROLE_MSC_ADMIN]) + @Security([ROLE_USER, ROLE_ADMIN]) public async getBridges(): Promise { const userId = this.context.request.user.userId; @@ -68,7 +68,7 @@ export class AdminIrcService { @GET @Path(":bridgeId") - @Security([ROLE_MSC_USER, ROLE_MSC_ADMIN]) + @Security([ROLE_USER, ROLE_ADMIN]) public async getBridge(@PathParam("bridgeId") bridgeId: number): Promise { const userId = this.context.request.user.userId; @@ -96,7 +96,7 @@ export class AdminIrcService { @POST @Path(":bridgeId/network/:networkId/enabled") - @Security([ROLE_MSC_USER, ROLE_MSC_ADMIN]) + @Security([ROLE_USER, ROLE_ADMIN]) public async setNetworkEnabled(@PathParam("bridgeId") bridgeId: number, @PathParam("networkId") networkId: string, request: SetEnabledRequest): Promise { const userId = this.context.request.user.userId; @@ -122,7 +122,7 @@ export class AdminIrcService { @POST @Path("new/upstream") - @Security([ROLE_MSC_USER, ROLE_MSC_ADMIN]) + @Security([ROLE_USER, ROLE_ADMIN]) public async newConfigForUpstream(request: CreateWithUpstream): Promise { const userId = this.context.request.user.userId; @@ -142,7 +142,7 @@ export class AdminIrcService { @POST @Path("new/selfhosted") - @Security([ROLE_MSC_USER, ROLE_MSC_ADMIN]) + @Security([ROLE_USER, ROLE_ADMIN]) public async newSelfhosted(request: CreateSelfhosted): Promise { const userId = this.context.request.user.userId; diff --git a/src/api/admin/AdminNebService.ts b/src/api/admin/AdminNebService.ts index aa172c1..d7d6a68 100644 --- a/src/api/admin/AdminNebService.ts +++ b/src/api/admin/AdminNebService.ts @@ -4,7 +4,7 @@ import { NebStore } from "../../db/NebStore"; import { NebConfig } from "../../models/neb"; import { LogService } from "matrix-js-snippets"; import { ApiError } from "../ApiError"; -import { ROLE_MSC_ADMIN, ROLE_MSC_USER } from "../security/MSCSecurity"; +import { ROLE_ADMIN, ROLE_USER } from "../security/MatrixSecurity"; interface CreateWithUpstream { upstreamId: number; @@ -31,7 +31,7 @@ export class AdminNebService { @GET @Path("all") - @Security([ROLE_MSC_USER, ROLE_MSC_ADMIN]) + @Security([ROLE_USER, ROLE_ADMIN]) public async getNebConfigs(): Promise { const cachedConfigs = Cache.for(CACHE_NEB).get("configurations"); if (cachedConfigs) return cachedConfigs; @@ -43,7 +43,7 @@ export class AdminNebService { @GET @Path(":id/config") - @Security([ROLE_MSC_USER, ROLE_MSC_ADMIN]) + @Security([ROLE_USER, ROLE_ADMIN]) public async getNebConfig(@PathParam("id") nebId: number): Promise { const configs = await this.getNebConfigs(); const firstConfig = configs.filter(c => c.id === nebId)[0]; @@ -53,7 +53,7 @@ export class AdminNebService { @POST @Path(":id/integration/:type/enabled") - @Security([ROLE_MSC_USER, ROLE_MSC_ADMIN]) + @Security([ROLE_USER, ROLE_ADMIN]) public async setIntegrationEnabled(@PathParam("id") nebId: number, @PathParam("type") integrationType: string, request: SetEnabledRequest): Promise { const userId = this.context.request.user.userId; @@ -67,7 +67,7 @@ export class AdminNebService { @POST @Path(":id/integration/:type/config") - @Security([ROLE_MSC_USER, ROLE_MSC_ADMIN]) + @Security([ROLE_USER, ROLE_ADMIN]) public async setIntegrationConfig(@PathParam("id") nebId: number, @PathParam("type") integrationType: string, newConfig: any): Promise { const userId = this.context.request.user.userId; @@ -81,14 +81,14 @@ export class AdminNebService { @GET @Path(":id/integration/:type/config") - @Security([ROLE_MSC_USER, ROLE_MSC_ADMIN]) + @Security([ROLE_USER, ROLE_ADMIN]) public async getIntegrationConfig(@PathParam("id") nebId: number, @PathParam("type") integrationType: string): Promise { return NebStore.getIntegrationConfig(nebId, integrationType); } @POST @Path("new/upstream") - @Security([ROLE_MSC_USER, ROLE_MSC_ADMIN]) + @Security([ROLE_USER, ROLE_ADMIN]) public async newConfigForUpstream(request: CreateWithUpstream): Promise { const userId = this.context.request.user.userId; @@ -107,7 +107,7 @@ export class AdminNebService { @POST @Path("new/appservice") - @Security([ROLE_MSC_USER, ROLE_MSC_ADMIN]) + @Security([ROLE_USER, ROLE_ADMIN]) public async newConfigForAppservice(request: CreateWithAppservice): Promise { const userId = this.context.request.user.userId; diff --git a/src/api/admin/AdminService.ts b/src/api/admin/AdminService.ts index 159ecab..974dfda 100644 --- a/src/api/admin/AdminService.ts +++ b/src/api/admin/AdminService.ts @@ -5,7 +5,7 @@ import { CURRENT_VERSION } from "../../version"; import { getFederationConnInfo } from "../../matrix/helpers"; import UserScalarToken from "../../db/models/UserScalarToken"; import { Cache, CACHE_SCALAR_ACCOUNTS } from "../../MemoryCache"; -import { ROLE_MSC_ADMIN, ROLE_MSC_USER } from "../security/MSCSecurity"; +import { ROLE_ADMIN, ROLE_USER } from "../security/MatrixSecurity"; interface DimensionVersionResponse { version: string; @@ -34,21 +34,21 @@ export class AdminService { @GET @Path("check") - @Security([ROLE_MSC_USER, ROLE_MSC_ADMIN]) + @Security([ROLE_USER, ROLE_ADMIN]) public async checkIfAdmin(): Promise<{}> { return {}; // A 200 OK essentially means "you're an admin". } @GET @Path("version") - @Security([ROLE_MSC_USER, ROLE_MSC_ADMIN]) + @Security([ROLE_USER, ROLE_ADMIN]) public async getVersion(): Promise { return {version: CURRENT_VERSION}; } @GET @Path("config") - @Security([ROLE_MSC_USER, ROLE_MSC_ADMIN]) + @Security([ROLE_USER, ROLE_ADMIN]) public async getConfig(): Promise { const client = new MatrixLiteClient(config.homeserver.accessToken); const fedInfo = await getFederationConnInfo(config.homeserver.name); @@ -70,7 +70,7 @@ export class AdminService { @GET @Path("test/federation") - @Security([ROLE_MSC_USER, ROLE_MSC_ADMIN]) + @Security([ROLE_USER, ROLE_ADMIN]) public async testFederationRouting(@QueryParam("server_name") serverName: string): Promise { return { inputServerName: serverName, @@ -80,7 +80,7 @@ export class AdminService { @POST @Path("sessions/logout/all") - @Security([ROLE_MSC_USER, ROLE_MSC_ADMIN]) + @Security([ROLE_USER, ROLE_ADMIN]) public async logoutAll(): Promise { // Clear the cache first to hopefully invalidate a bunch of them Cache.for(CACHE_SCALAR_ACCOUNTS).clear(); diff --git a/src/api/admin/AdminSlackService.ts b/src/api/admin/AdminSlackService.ts index 3f054d9..a160ffd 100644 --- a/src/api/admin/AdminSlackService.ts +++ b/src/api/admin/AdminSlackService.ts @@ -4,7 +4,7 @@ import { LogService } from "matrix-js-snippets"; import { ApiError } from "../ApiError"; import Upstream from "../../db/models/Upstream"; import SlackBridgeRecord from "../../db/models/SlackBridgeRecord"; -import { ROLE_MSC_ADMIN, ROLE_MSC_USER } from "../security/MSCSecurity"; +import { ROLE_ADMIN, ROLE_USER } from "../security/MatrixSecurity"; interface CreateWithUpstream { upstreamId: number; @@ -32,7 +32,7 @@ export class AdminSlackService { @GET @Path("all") - @Security([ROLE_MSC_USER, ROLE_MSC_ADMIN]) + @Security([ROLE_USER, ROLE_ADMIN]) public async getBridges(): Promise { const bridges = await SlackBridgeRecord.findAll(); return Promise.all(bridges.map(async b => { @@ -47,7 +47,7 @@ export class AdminSlackService { @GET @Path(":bridgeId") - @Security([ROLE_MSC_USER, ROLE_MSC_ADMIN]) + @Security([ROLE_USER, ROLE_ADMIN]) public async getBridge(@PathParam("bridgeId") bridgeId: number): Promise { const telegramBridge = await SlackBridgeRecord.findByPk(bridgeId); if (!telegramBridge) throw new ApiError(404, "Slack Bridge not found"); @@ -62,7 +62,7 @@ export class AdminSlackService { @POST @Path(":bridgeId") - @Security([ROLE_MSC_USER, ROLE_MSC_ADMIN]) + @Security([ROLE_USER, ROLE_ADMIN]) public async updateBridge(@PathParam("bridgeId") bridgeId: number, request: CreateSelfhosted): Promise { const userId = this.context.request.user.userId; const bridge = await SlackBridgeRecord.findByPk(bridgeId); @@ -80,7 +80,7 @@ export class AdminSlackService { @POST @Path("new/upstream") - @Security([ROLE_MSC_USER, ROLE_MSC_ADMIN]) + @Security([ROLE_USER, ROLE_ADMIN]) public async newConfigForUpstream(request: CreateWithUpstream): Promise { const userId = this.context.request.user.userId; const upstream = await Upstream.findByPk(request.upstreamId); @@ -99,7 +99,7 @@ export class AdminSlackService { @POST @Path("new/selfhosted") - @Security([ROLE_MSC_USER, ROLE_MSC_ADMIN]) + @Security([ROLE_USER, ROLE_ADMIN]) public async newSelfhosted(request: CreateSelfhosted): Promise { const userId = this.context.request.user.userId; const bridge = await SlackBridgeRecord.create({ diff --git a/src/api/admin/AdminStickerService.ts b/src/api/admin/AdminStickerService.ts index 5066946..b98dc59 100644 --- a/src/api/admin/AdminStickerService.ts +++ b/src/api/admin/AdminStickerService.ts @@ -9,7 +9,7 @@ import config from "../../config"; import Sticker from "../../db/models/Sticker"; import { LogService } from "matrix-js-snippets"; import * as sharp from "sharp"; -import { ROLE_MSC_ADMIN, ROLE_MSC_USER } from "../security/MSCSecurity"; +import { ROLE_ADMIN, ROLE_USER } from "../security/MatrixSecurity"; interface SetEnabledRequest { isEnabled: boolean; @@ -30,14 +30,14 @@ export class AdminStickerService { @GET @Path("packs") - @Security([ROLE_MSC_USER, ROLE_MSC_ADMIN]) + @Security([ROLE_USER, ROLE_ADMIN]) public async getStickerPacks(): Promise { return await DimensionStickerService.getStickerPacks(false); } @POST @Path("packs/:id/enabled") - @Security([ROLE_MSC_USER, ROLE_MSC_ADMIN]) + @Security([ROLE_USER, ROLE_ADMIN]) public async setPackEnabled(@PathParam("id") packId: number, request: SetEnabledRequest): Promise { const pack = await StickerPack.findByPk(packId); if (!pack) throw new ApiError(404, "Sticker pack not found"); @@ -51,7 +51,7 @@ export class AdminStickerService { @POST @Path("packs/import/telegram") - @Security([ROLE_MSC_USER, ROLE_MSC_ADMIN]) + @Security([ROLE_USER, ROLE_ADMIN]) public async importFromTelegram(request: ImportTelegramRequest): Promise { const userId = this.context.request.user.userId; diff --git a/src/api/admin/AdminTelegramService.ts b/src/api/admin/AdminTelegramService.ts index 9cf136b..ec48c3a 100644 --- a/src/api/admin/AdminTelegramService.ts +++ b/src/api/admin/AdminTelegramService.ts @@ -3,7 +3,7 @@ import { Cache, CACHE_INTEGRATIONS, CACHE_TELEGRAM_BRIDGE } from "../../MemoryCa import { LogService } from "matrix-js-snippets"; import { ApiError } from "../ApiError"; import TelegramBridgeRecord from "../../db/models/TelegramBridgeRecord"; -import { ROLE_MSC_ADMIN, ROLE_MSC_USER } from "../security/MSCSecurity"; +import { ROLE_ADMIN, ROLE_USER } from "../security/MatrixSecurity"; interface CreateWithUpstream { upstreamId: number; @@ -37,7 +37,7 @@ export class AdminTelegramService { @GET @Path("all") - @Security([ROLE_MSC_USER, ROLE_MSC_ADMIN]) + @Security([ROLE_USER, ROLE_ADMIN]) public async getBridges(): Promise { const bridges = await TelegramBridgeRecord.findAll(); return Promise.all(bridges.map(async b => { @@ -55,7 +55,7 @@ export class AdminTelegramService { @GET @Path(":bridgeId") - @Security([ROLE_MSC_USER, ROLE_MSC_ADMIN]) + @Security([ROLE_USER, ROLE_ADMIN]) public async getBridge(@PathParam("bridgeId") bridgeId: number): Promise { const telegramBridge = await TelegramBridgeRecord.findByPk(bridgeId); if (!telegramBridge) throw new ApiError(404, "Telegram Bridge not found"); @@ -73,7 +73,7 @@ export class AdminTelegramService { @POST @Path(":bridgeId") - @Security([ROLE_MSC_USER, ROLE_MSC_ADMIN]) + @Security([ROLE_USER, ROLE_ADMIN]) public async updateBridge(@PathParam("bridgeId") bridgeId: number, request: CreateSelfhosted): Promise { const userId = this.context.request.user.userId; @@ -95,14 +95,14 @@ export class AdminTelegramService { @POST @Path("new/upstream") - @Security([ROLE_MSC_USER, ROLE_MSC_ADMIN]) + @Security([ROLE_USER, ROLE_ADMIN]) public async newConfigForUpstream(@QueryParam("scalar_token") _scalarToken: string, _request: CreateWithUpstream): Promise { throw new ApiError(400, "Cannot create a telegram bridge from an upstream"); } @POST @Path("new/selfhosted") - @Security([ROLE_MSC_USER, ROLE_MSC_ADMIN]) + @Security([ROLE_USER, ROLE_ADMIN]) public async newSelfhosted(request: CreateSelfhosted): Promise { const userId = this.context.request.user.userId; diff --git a/src/api/admin/AdminTermsService.ts b/src/api/admin/AdminTermsService.ts index e403b21..b07ea02 100644 --- a/src/api/admin/AdminTermsService.ts +++ b/src/api/admin/AdminTermsService.ts @@ -1,7 +1,7 @@ import { GET, Path, PathParam, POST, PUT, Security } from "typescript-rest"; import TermsController, { ITerms } from "../controllers/TermsController"; import { AutoWired, Inject } from "typescript-ioc/es6"; -import { ROLE_MSC_ADMIN, ROLE_MSC_USER } from "../security/MSCSecurity"; +import { ROLE_ADMIN, ROLE_USER } from "../security/MatrixSecurity"; interface CreatePolicyObject { name: string; @@ -21,35 +21,35 @@ export class AdminTermsService { @GET @Path("all") - @Security([ROLE_MSC_USER, ROLE_MSC_ADMIN]) + @Security([ROLE_USER, ROLE_ADMIN]) public async getPolicies(): Promise { return this.termsController.getPoliciesForAdmin(); } @GET @Path(":shortcode/:version") - @Security([ROLE_MSC_USER, ROLE_MSC_ADMIN]) + @Security([ROLE_USER, ROLE_ADMIN]) public async getPolicy(@PathParam("shortcode") shortcode: string, @PathParam("version") version: string): Promise { return this.termsController.getPolicyForAdmin(shortcode, version); } @POST @Path(":shortcode/draft") - @Security([ROLE_MSC_USER, ROLE_MSC_ADMIN]) + @Security([ROLE_USER, ROLE_ADMIN]) public async createDraftPolicy(@PathParam("shortcode") shortcode: string, request: CreatePolicyObject): Promise { return this.termsController.createDraftPolicy(request.name, shortcode, request.text, request.url); } @POST @Path(":shortcode/publish/:version") - @Security([ROLE_MSC_USER, ROLE_MSC_ADMIN]) + @Security([ROLE_USER, ROLE_ADMIN]) public async publishDraftPolicy(@PathParam("shortcode") shortcode: string, @PathParam("version") version: string): Promise { return this.termsController.publishPolicy(shortcode, version); } @PUT @Path(":shortcode/:version") - @Security([ROLE_MSC_USER, ROLE_MSC_ADMIN]) + @Security([ROLE_USER, ROLE_ADMIN]) public async updatePolicy(@PathParam("shortcode") shortcode: string, @PathParam("version") version: string, request: CreatePolicyObject): Promise { return this.termsController.updatePolicy(request.name, shortcode, version, request.text, request.url); } diff --git a/src/api/admin/AdminUpstreamService.ts b/src/api/admin/AdminUpstreamService.ts index 8ce7296..0c297a3 100644 --- a/src/api/admin/AdminUpstreamService.ts +++ b/src/api/admin/AdminUpstreamService.ts @@ -2,7 +2,7 @@ import { Context, GET, Path, POST, Security, ServiceContext } from "typescript-r import { Cache, CACHE_SCALAR_ACCOUNTS, CACHE_UPSTREAM } from "../../MemoryCache"; import Upstream from "../../db/models/Upstream"; import { LogService } from "matrix-js-snippets"; -import { ROLE_MSC_ADMIN, ROLE_MSC_USER } from "../security/MSCSecurity"; +import { ROLE_ADMIN, ROLE_USER } from "../security/MatrixSecurity"; interface UpstreamRepsonse { id: number; @@ -31,7 +31,7 @@ export class AdminUpstreamService { @GET @Path("all") - @Security([ROLE_MSC_USER, ROLE_MSC_ADMIN]) + @Security([ROLE_USER, ROLE_ADMIN]) public async getUpstreams(): Promise { const cachedUpstreams = Cache.for(CACHE_UPSTREAM).get("upstreams"); if (cachedUpstreams) return cachedUpstreams; @@ -44,7 +44,7 @@ export class AdminUpstreamService { @POST @Path("new") - @Security([ROLE_MSC_USER, ROLE_MSC_ADMIN]) + @Security([ROLE_USER, ROLE_ADMIN]) public async createUpstream(request: NewUpstreamRequest): Promise { const userId = this.context.request.user.userId; diff --git a/src/api/admin/AdminWebhooksService.ts b/src/api/admin/AdminWebhooksService.ts index 1a3344d..8f85d47 100644 --- a/src/api/admin/AdminWebhooksService.ts +++ b/src/api/admin/AdminWebhooksService.ts @@ -3,7 +3,7 @@ import { Cache, CACHE_INTEGRATIONS, CACHE_WEBHOOKS_BRIDGE } from "../../MemoryCa import { LogService } from "matrix-js-snippets"; import { ApiError } from "../ApiError"; import WebhookBridgeRecord from "../../db/models/WebhookBridgeRecord"; -import { ROLE_MSC_ADMIN, ROLE_MSC_USER } from "../security/MSCSecurity"; +import { ROLE_ADMIN, ROLE_USER } from "../security/MatrixSecurity"; interface CreateWithUpstream { upstreamId: number; @@ -33,7 +33,7 @@ export class AdminWebhooksService { @GET @Path("all") - @Security([ROLE_MSC_USER, ROLE_MSC_ADMIN]) + @Security([ROLE_USER, ROLE_ADMIN]) public async getBridges(): Promise { const bridges = await WebhookBridgeRecord.findAll(); return Promise.all(bridges.map(async b => { @@ -49,7 +49,7 @@ export class AdminWebhooksService { @GET @Path(":bridgeId") - @Security([ROLE_MSC_USER, ROLE_MSC_ADMIN]) + @Security([ROLE_USER, ROLE_ADMIN]) public async getBridge(@PathParam("bridgeId") bridgeId: number): Promise { const webhookBridge = await WebhookBridgeRecord.findByPk(bridgeId); if (!webhookBridge) throw new ApiError(404, "Webhook Bridge not found"); @@ -65,7 +65,7 @@ export class AdminWebhooksService { @POST @Path(":bridgeId") - @Security([ROLE_MSC_USER, ROLE_MSC_ADMIN]) + @Security([ROLE_USER, ROLE_ADMIN]) public async updateBridge(@PathParam("bridgeId") bridgeId: number, request: CreateSelfhosted): Promise { const userId = this.context.request.user.userId; @@ -85,14 +85,14 @@ export class AdminWebhooksService { @POST @Path("new/upstream") - @Security([ROLE_MSC_USER, ROLE_MSC_ADMIN]) + @Security([ROLE_USER, ROLE_ADMIN]) public async newConfigForUpstream(@QueryParam("scalar_token") _scalarToken: string, _request: CreateWithUpstream): Promise { throw new ApiError(400, "Cannot create a webhook bridge from an upstream"); } @POST @Path("new/selfhosted") - @Security([ROLE_MSC_USER, ROLE_MSC_ADMIN]) + @Security([ROLE_USER, ROLE_ADMIN]) public async newSelfhosted(request: CreateSelfhosted): Promise { const userId = this.context.request.user.userId; diff --git a/src/api/controllers/AccountController.ts b/src/api/controllers/AccountController.ts index 0fb7f69..2610040 100644 --- a/src/api/controllers/AccountController.ts +++ b/src/api/controllers/AccountController.ts @@ -10,7 +10,7 @@ import { ScalarClient } from "../../scalar/ScalarClient"; import * as randomString from "random-string"; import { AutoWired } from "typescript-ioc/es6"; import { Cache, CACHE_SCALAR_ACCOUNTS } from "../../MemoryCache"; -import { IMSCUser } from "../security/MSCSecurity"; +import { ILoggedInUser } from "../security/MatrixSecurity"; export interface IAccountRegisteredResponse { token: string; @@ -108,10 +108,10 @@ export default class AccountController { /** * Logs a user out - * @param {IMSCUser} user The user to log out + * @param {ILoggedInUser} user The user to log out * @returns {Promise<*>} Resolves when complete. */ - public async logout(user: IMSCUser): Promise { + public async logout(user: ILoggedInUser): Promise { const tokens = await UserScalarToken.findAll({where: {scalarToken: user.token}, include: [Upstream]}); for (const token of tokens) { if (token.upstream) { diff --git a/src/api/controllers/TermsController.ts b/src/api/controllers/TermsController.ts index 8994552..0d35441 100644 --- a/src/api/controllers/TermsController.ts +++ b/src/api/controllers/TermsController.ts @@ -1,5 +1,5 @@ import { AutoWired } from "typescript-ioc/es6"; -import { IMSCUser } from "../security/MSCSecurity"; +import { ILoggedInUser } from "../security/MatrixSecurity"; import TermsRecord from "../../db/models/TermsRecord"; import TermsTextRecord from "../../db/models/TermsTextRecord"; import TermsSignedRecord from "../../db/models/TermsSignedRecord"; @@ -86,11 +86,11 @@ export default class TermsController { return terms; } - public async doesUserNeedToSignTerms(user: IMSCUser): Promise { + public async doesUserNeedToSignTerms(user: ILoggedInUser): Promise { return Object.keys((await this.getMissingTermsForUser(user)).policies).length > 0; } - public async getMissingTermsForUser(user: IMSCUser): Promise { + public async getMissingTermsForUser(user: ILoggedInUser): Promise { const latest = await this.getPublishedTerms(); const signed = await TermsSignedRecord.findAll({where: {userId: user.userId}}); @@ -154,7 +154,7 @@ export default class TermsController { return policies; } - public async signTermsMatching(user: IMSCUser, urls: string[]): Promise { + public async signTermsMatching(user: ILoggedInUser, urls: string[]): Promise { const terms = await TermsTextRecord.findAll({where: {url: {[Op.in]: urls}}}); const signed = await TermsSignedRecord.findAll({where: {userId: user.userId}}); diff --git a/src/api/dimension/DimensionGitterService.ts b/src/api/dimension/DimensionGitterService.ts index d5c1d7e..b2c889b 100644 --- a/src/api/dimension/DimensionGitterService.ts +++ b/src/api/dimension/DimensionGitterService.ts @@ -2,7 +2,7 @@ import { Context, DELETE, GET, Path, PathParam, POST, Security, ServiceContext } import { ApiError } from "../ApiError"; import { BridgedRoom, GitterBridge } from "../../bridges/GitterBridge"; import { LogService } from "matrix-js-snippets"; -import { ROLE_MSC_USER } from "../security/MSCSecurity"; +import { ROLE_USER } from "../security/MatrixSecurity"; interface BridgeRoomRequest { gitterRoomName: string; @@ -19,7 +19,7 @@ export class DimensionGitterService { @GET @Path("room/:roomId/link") - @Security(ROLE_MSC_USER) + @Security(ROLE_USER) public async getLink(@PathParam("roomId") roomId: string): Promise { const userId = this.context.request.user.userId; try { @@ -33,7 +33,7 @@ export class DimensionGitterService { @POST @Path("room/:roomId/link") - @Security(ROLE_MSC_USER) + @Security(ROLE_USER) public async bridgeRoom(@PathParam("roomId") roomId: string, request: BridgeRoomRequest): Promise { const userId = this.context.request.user.userId; try { @@ -48,7 +48,7 @@ export class DimensionGitterService { @DELETE @Path("room/:roomId/link") - @Security(ROLE_MSC_USER) + @Security(ROLE_USER) public async unbridgeRoom(@PathParam("roomId") roomId: string): Promise { const userId = this.context.request.user.userId; try { diff --git a/src/api/dimension/DimensionIntegrationsService.ts b/src/api/dimension/DimensionIntegrationsService.ts index 3fdf1fd..ee0befa 100644 --- a/src/api/dimension/DimensionIntegrationsService.ts +++ b/src/api/dimension/DimensionIntegrationsService.ts @@ -10,7 +10,7 @@ import { ComplexBot } from "../../integrations/ComplexBot"; import { Bridge } from "../../integrations/Bridge"; import { BridgeStore } from "../../db/BridgeStore"; import { BotStore } from "../../db/BotStore"; -import { ROLE_MSC_USER } from "../security/MSCSecurity"; +import { ROLE_USER } from "../security/MatrixSecurity"; export interface IntegrationsResponse { widgets: Widget[], @@ -88,7 +88,7 @@ export class DimensionIntegrationsService { @GET @Path("room/:roomId") - @Security(ROLE_MSC_USER) + @Security(ROLE_USER) public async getIntegrationsInRoom(@PathParam("roomId") roomId: string): Promise { const userId = this.context.request.user.userId; return { @@ -101,7 +101,7 @@ export class DimensionIntegrationsService { @GET @Path("room/:roomId/integrations/:category/:type") - @Security(ROLE_MSC_USER) + @Security(ROLE_USER) public async getIntegrationInRoom(@PathParam("roomId") roomId: string, @PathParam("category") category: string, @PathParam("type") integrationType: string): Promise { const roomConfig = await this.getIntegrationsInRoom(roomId); // does auth for us @@ -114,7 +114,7 @@ export class DimensionIntegrationsService { @POST @Path("room/:roomId/integrations/:category/:type/config") - @Security(ROLE_MSC_USER) + @Security(ROLE_USER) public async setIntegrationConfigurationInRoom(@PathParam("roomId") roomId: string, @PathParam("category") category: string, @PathParam("type") integrationType: string, newConfig: any): Promise { const userId = this.context.request.user.userId; @@ -128,7 +128,7 @@ export class DimensionIntegrationsService { @DELETE @Path("room/:roomId/integrations/:category/:type") - @Security(ROLE_MSC_USER) + @Security(ROLE_USER) public async removeIntegrationInRoom(@PathParam("roomId") roomId: string, @PathParam("category") category: string, @PathParam("type") integrationType: string): Promise { const userId = this.context.request.user.userId; diff --git a/src/api/dimension/DimensionIrcService.ts b/src/api/dimension/DimensionIrcService.ts index e4a4983..f0387f6 100644 --- a/src/api/dimension/DimensionIrcService.ts +++ b/src/api/dimension/DimensionIrcService.ts @@ -3,7 +3,7 @@ import { LogService } from "matrix-js-snippets"; import { IrcBridge } from "../../bridges/IrcBridge"; import IrcBridgeRecord from "../../db/models/IrcBridgeRecord"; import { ApiError } from "../ApiError"; -import { ROLE_MSC_USER } from "../security/MSCSecurity"; +import { ROLE_USER } from "../security/MatrixSecurity"; interface RequestLinkRequest { op: string; @@ -20,7 +20,7 @@ export class DimensionIrcService { @GET @Path(":networkId/channel/:channel/ops") - @Security(ROLE_MSC_USER) + @Security(ROLE_USER) public async getOps(@PathParam("networkId") networkId: string, @PathParam("channel") channelNoHash: string): Promise { const userId = this.context.request.user.userId; const parsed = IrcBridge.parseNetworkId(networkId); @@ -36,7 +36,7 @@ export class DimensionIrcService { @POST @Path(":networkId/channel/:channel/link/:roomId") - @Security(ROLE_MSC_USER) + @Security(ROLE_USER) public async requestLink(@PathParam("networkId") networkId: string, @PathParam("channel") channelNoHash: string, @PathParam("roomId") roomId: string, request: RequestLinkRequest): Promise { const userId = this.context.request.user.userId; const parsed = IrcBridge.parseNetworkId(networkId); @@ -52,7 +52,7 @@ export class DimensionIrcService { @POST @Path(":networkId/channel/:channel/unlink/:roomId") - @Security(ROLE_MSC_USER) + @Security(ROLE_USER) public async unlink(@PathParam("networkId") networkId: string, @PathParam("channel") channelNoHash: string, @PathParam("roomId") roomId: string): Promise { const userId = this.context.request.user.userId; const parsed = IrcBridge.parseNetworkId(networkId); diff --git a/src/api/dimension/DimensionSlackService.ts b/src/api/dimension/DimensionSlackService.ts index 750ffd5..0eab69f 100644 --- a/src/api/dimension/DimensionSlackService.ts +++ b/src/api/dimension/DimensionSlackService.ts @@ -3,7 +3,7 @@ import { ApiError } from "../ApiError"; import { LogService } from "matrix-js-snippets"; import { BridgedChannel, SlackBridge } from "../../bridges/SlackBridge"; import { SlackChannel, SlackTeam } from "../../bridges/models/slack"; -import { ROLE_MSC_USER } from "../security/MSCSecurity"; +import { ROLE_USER } from "../security/MatrixSecurity"; interface BridgeRoomRequest { teamId: string; @@ -21,7 +21,7 @@ export class DimensionSlackService { @GET @Path("room/:roomId/link") - @Security(ROLE_MSC_USER) + @Security(ROLE_USER) public async getLink(@PathParam("roomId") roomId: string): Promise { const userId = this.context.request.user.userId; @@ -36,7 +36,7 @@ export class DimensionSlackService { @POST @Path("room/:roomId/link") - @Security(ROLE_MSC_USER) + @Security(ROLE_USER) public async bridgeRoom(@PathParam("roomId") roomId: string, request: BridgeRoomRequest): Promise { const userId = this.context.request.user.userId; @@ -69,7 +69,7 @@ export class DimensionSlackService { @GET @Path("teams") - @Security(ROLE_MSC_USER) + @Security(ROLE_USER) public async getTeams(): Promise { const userId = this.context.request.user.userId; @@ -81,7 +81,7 @@ export class DimensionSlackService { @GET @Path("teams/:teamId/channels") - @Security(ROLE_MSC_USER) + @Security(ROLE_USER) public async getChannels(@PathParam("teamId") teamId: string): Promise { const userId = this.context.request.user.userId; @@ -96,7 +96,7 @@ export class DimensionSlackService { @GET @Path("auth") - @Security(ROLE_MSC_USER) + @Security(ROLE_USER) public async getAuthUrl(): Promise<{ authUrl: string }> { const userId = this.context.request.user.userId; diff --git a/src/api/dimension/DimensionStickerService.ts b/src/api/dimension/DimensionStickerService.ts index 16774ff..88ecad5 100644 --- a/src/api/dimension/DimensionStickerService.ts +++ b/src/api/dimension/DimensionStickerService.ts @@ -7,7 +7,7 @@ import { ApiError } from "../ApiError"; import { StickerpackMetadataDownloader } from "../../utils/StickerpackMetadataDownloader"; import { MatrixStickerBot } from "../../matrix/MatrixStickerBot"; import config from "../../config"; -import { ROLE_MSC_USER } from "../security/MSCSecurity"; +import { ROLE_USER } from "../security/MatrixSecurity"; export interface MemoryStickerPack { id: number; @@ -88,7 +88,7 @@ export class DimensionStickerService { @GET @Path("config") - @Security(ROLE_MSC_USER) + @Security(ROLE_USER) public async getConfig(): Promise { return { enabled: config.stickers.enabled, @@ -99,7 +99,7 @@ export class DimensionStickerService { @GET @Path("packs") - @Security(ROLE_MSC_USER) + @Security(ROLE_USER) public async getStickerPacks(): Promise { const userId = this.context.request.user.userId; const cachedPacks = Cache.for(CACHE_STICKERS).get("packs_" + userId); @@ -126,7 +126,7 @@ export class DimensionStickerService { @POST @Path("packs/:packId/selected") - @Security(ROLE_MSC_USER) + @Security(ROLE_USER) public async setPackSelected(@PathParam("packId") packId: number, request: SetSelectedRequest): Promise { const userId = this.context.request.user.userId; const pack = await StickerPack.findByPk(packId); @@ -150,7 +150,7 @@ export class DimensionStickerService { @POST @Path("packs/import") - @Security(ROLE_MSC_USER) + @Security(ROLE_USER) public async importPack(request: ImportPackRequest): Promise { if (!config.stickers.enabled) { throw new ApiError(400, "Custom stickerpacks are disabled on this homeserver"); diff --git a/src/api/dimension/DimensionTelegramService.ts b/src/api/dimension/DimensionTelegramService.ts index 0ca186a..17cb05e 100644 --- a/src/api/dimension/DimensionTelegramService.ts +++ b/src/api/dimension/DimensionTelegramService.ts @@ -1,7 +1,7 @@ import { Context, DELETE, GET, Path, PathParam, POST, QueryParam, Security, ServiceContext } from "typescript-rest"; import { TelegramBridge } from "../../bridges/TelegramBridge"; import { ApiError } from "../ApiError"; -import { ROLE_MSC_USER } from "../security/MSCSecurity"; +import { ROLE_USER } from "../security/MatrixSecurity"; interface PortalInfoResponse { bridged: boolean; @@ -26,7 +26,7 @@ export class DimensionTelegramService { @GET @Path("chat/:chatId") - @Security(ROLE_MSC_USER) + @Security(ROLE_USER) public async getPortalInfo(@PathParam("chatId") chatId: number, @QueryParam("roomId") roomId: string): Promise { const userId = this.context.request.user.userId; @@ -50,7 +50,7 @@ export class DimensionTelegramService { @POST @Path("chat/:chatId/room/:roomId") - @Security(ROLE_MSC_USER) + @Security(ROLE_USER) public async bridgeRoom(@PathParam("chatId") chatId: number, @PathParam("roomId") roomId: string, request: BridgeRoomRequest): Promise { const userId = this.context.request.user.userId; @@ -73,7 +73,7 @@ export class DimensionTelegramService { @DELETE @Path("room/:roomId") - @Security(ROLE_MSC_USER) + @Security(ROLE_USER) public async unbridgeRoom(@PathParam("roomId") roomId: string): Promise { const userId = this.context.request.user.userId; diff --git a/src/api/dimension/DimensionWebhooksService.ts b/src/api/dimension/DimensionWebhooksService.ts index b475e72..240ef56 100644 --- a/src/api/dimension/DimensionWebhooksService.ts +++ b/src/api/dimension/DimensionWebhooksService.ts @@ -15,7 +15,7 @@ import Webhook from "../../db/models/Webhook"; import { ApiError } from "../ApiError"; import { LogService } from "matrix-js-snippets"; import * as request from "request"; -import { ROLE_MSC_USER } from "../security/MSCSecurity"; +import { ROLE_USER } from "../security/MatrixSecurity"; /** * API for interacting with the Webhooks bridge, and for setting up proxies to other @@ -55,7 +55,7 @@ export class DimensionWebhooksService { @POST @Path("room/:roomId/webhooks/new") - @Security(ROLE_MSC_USER) + @Security(ROLE_USER) public async newWebhook(@PathParam("roomId") roomId: string, options: WebhookOptions): Promise { const userId = this.context.request.user.userId; const webhooks = new WebhooksBridge(userId); @@ -64,7 +64,7 @@ export class DimensionWebhooksService { @POST @Path("room/:roomId/webhooks/:hookId") - @Security(ROLE_MSC_USER) + @Security(ROLE_USER) public async updateWebhook(@PathParam("roomId") roomId: string, @PathParam("hookId") hookId: string, options: WebhookOptions): Promise { const userId = this.context.request.user.userId; const webhooks = new WebhooksBridge(userId); @@ -73,7 +73,7 @@ export class DimensionWebhooksService { @DELETE @Path("room/:roomId/webhooks/:hookId") - @Security(ROLE_MSC_USER) + @Security(ROLE_USER) public async deleteWebhook(@PathParam("roomId") roomId: string, @PathParam("hookId") hookId: string): Promise { const userId = this.context.request.user.userId; const webhooks = new WebhooksBridge(userId); diff --git a/src/api/msc/MSCAccountService.ts b/src/api/matrix/MatrixAccountService.ts similarity index 83% rename from src/api/msc/MSCAccountService.ts rename to src/api/matrix/MatrixAccountService.ts index 3784dee..9bf8cc9 100644 --- a/src/api/msc/MSCAccountService.ts +++ b/src/api/matrix/MatrixAccountService.ts @@ -2,7 +2,7 @@ import { Context, GET, Path, POST, Security, ServiceContext } from "typescript-r import { OpenId } from "../../models/OpenId"; import AccountController, { IAccountInfoResponse, IAccountRegisteredResponse } from "../controllers/AccountController"; import { AutoWired, Inject } from "typescript-ioc/es6"; -import { IMSCUser, ROLE_MSC_USER } from "../security/MSCSecurity"; +import { ILoggedInUser, ROLE_USER } from "../security/MatrixSecurity"; import { ScalarClient } from "../../scalar/ScalarClient"; /** @@ -10,7 +10,7 @@ import { ScalarClient } from "../../scalar/ScalarClient"; */ @Path("/_matrix/integrations/v1/account") @AutoWired -export class MSCAccountService { +export class MatrixAccountService { @Inject private accountController: AccountController; @@ -26,15 +26,15 @@ export class MSCAccountService { @GET @Path("") - @Security(ROLE_MSC_USER) + @Security(ROLE_USER) public async info(): Promise { - const user: IMSCUser = this.context.request.user; + const user: ILoggedInUser = this.context.request.user; return {user_id: user.userId}; } @POST @Path("logout") - @Security(ROLE_MSC_USER) + @Security(ROLE_USER) public async logout(): Promise { await this.accountController.logout(this.context.request.user); return {}; diff --git a/src/api/msc/MSCTermsService.ts b/src/api/matrix/MatrixTermsService.ts similarity index 86% rename from src/api/msc/MSCTermsService.ts rename to src/api/matrix/MatrixTermsService.ts index 18a1ada..61b86ea 100644 --- a/src/api/msc/MSCTermsService.ts +++ b/src/api/matrix/MatrixTermsService.ts @@ -1,6 +1,6 @@ import { Context, GET, Path, POST, Security, ServiceContext } from "typescript-rest"; import { AutoWired, Inject } from "typescript-ioc/es6"; -import { ROLE_MSC_USER } from "../security/MSCSecurity"; +import { ROLE_USER } from "../security/MatrixSecurity"; import TermsController, { ITermsNotSignedResponse } from "../controllers/TermsController"; export interface SignTermsRequest { @@ -12,7 +12,7 @@ export interface SignTermsRequest { */ @Path("/_matrix/integrations/v1/terms") @AutoWired -export class MSCTermsService { +export class MatrixTermsService { @Inject private termsController: TermsController; @@ -22,14 +22,14 @@ export class MSCTermsService { @GET @Path("") - @Security(ROLE_MSC_USER) + @Security(ROLE_USER) public async needsSignatures(): Promise { return this.termsController.getMissingTermsForUser(this.context.request.user); } @POST @Path("") - @Security(ROLE_MSC_USER) + @Security(ROLE_USER) public async signTerms(request: SignTermsRequest): Promise { await this.termsController.signTermsMatching(this.context.request.user, request.user_accepts); return {}; diff --git a/src/api/scalar/ScalarService.ts b/src/api/scalar/ScalarService.ts index 8db25ca..b36ce58 100644 --- a/src/api/scalar/ScalarService.ts +++ b/src/api/scalar/ScalarService.ts @@ -4,9 +4,9 @@ import { OpenId } from "../../models/OpenId"; import { ScalarAccountResponse, ScalarRegisterResponse } from "../../models/ScalarResponses"; import { AutoWired, Inject } from "typescript-ioc/es6"; import AccountController from "../controllers/AccountController"; -import { ROLE_MSC_USER } from "../security/MSCSecurity"; +import { ROLE_USER } from "../security/MatrixSecurity"; import TermsController, { ITermsNotSignedResponse } from "../controllers/TermsController"; -import { SignTermsRequest } from "../msc/MSCTermsService"; +import { SignTermsRequest } from "../matrix/MatrixTermsService"; import { ScalarClient } from "../../scalar/ScalarClient"; /** @@ -39,7 +39,7 @@ export class ScalarService { @GET @Path("account") - @Security(ROLE_MSC_USER) + @Security(ROLE_USER) public async getAccount(@QueryParam("v") apiVersion: string): Promise { if (apiVersion !== "1.1") { throw new ApiError(401, "Invalid API version."); @@ -50,14 +50,14 @@ export class ScalarService { @GET @Path("terms") - @Security(ROLE_MSC_USER) + @Security(ROLE_USER) public async getTerms(): Promise { return this.termsController.getMissingTermsForUser(this.context.request.user); } @POST @Path("terms") - @Security(ROLE_MSC_USER) + @Security(ROLE_USER) public async signTerms(request: SignTermsRequest): Promise { await this.termsController.signTermsMatching(this.context.request.user, request.user_accepts); return {}; diff --git a/src/api/scalar/ScalarWidgetService.ts b/src/api/scalar/ScalarWidgetService.ts index a812c53..75f2fa2 100644 --- a/src/api/scalar/ScalarWidgetService.ts +++ b/src/api/scalar/ScalarWidgetService.ts @@ -3,7 +3,7 @@ import { LogService } from "matrix-js-snippets"; import { Cache, CACHE_WIDGET_TITLES } from "../../MemoryCache"; import { MatrixLiteClient } from "../../matrix/MatrixLiteClient"; import config from "../../config"; -import { ROLE_MSC_USER } from "../security/MSCSecurity"; +import { ROLE_USER } from "../security/MatrixSecurity"; import moment = require("moment"); interface UrlPreviewResponse { @@ -26,7 +26,7 @@ export class ScalarWidgetService { @GET @Path("title_lookup") - @Security(ROLE_MSC_USER) + @Security(ROLE_USER) public async titleLookup(@QueryParam("curl") url: string): Promise { const cachedResult = Cache.for(CACHE_WIDGET_TITLES).get(url); if (cachedResult) { diff --git a/src/api/security/MSCSecurity.ts b/src/api/security/MatrixSecurity.ts similarity index 89% rename from src/api/security/MSCSecurity.ts rename to src/api/security/MatrixSecurity.ts index 3799cd4..5191209 100644 --- a/src/api/security/MSCSecurity.ts +++ b/src/api/security/MatrixSecurity.ts @@ -8,13 +8,13 @@ import config from "../../config"; import { ScalarStore } from "../../db/ScalarStore"; import { ScalarClient } from "../../scalar/ScalarClient"; -export interface IMSCUser { +export interface ILoggedInUser { userId: string; token: string; } -export const ROLE_MSC_USER = "ROLE_MSC_USER"; -export const ROLE_MSC_ADMIN = "ROLE_MSC_ADMIN"; +export const ROLE_USER = "ROLE_USER"; +export const ROLE_ADMIN = "ROLE_ADMIN"; const TERMS_IGNORED_ROUTES = [ {method: "*", path: "/api/v1/dimension/admin/"}, @@ -33,16 +33,16 @@ const ADMIN_ROUTES = [ {method: "*", path: "/api/v1/dimension/admin/"}, ]; -export default class MSCSecurity implements ServiceAuthenticator { +export default class MatrixSecurity implements ServiceAuthenticator { private accountController = new AccountController(); private termsController = new TermsController(); public getRoles(req: Request): string[] { if (req.user) { - const roles = [ROLE_MSC_USER]; + const roles = [ROLE_USER]; if (config.admins.includes(req.user.userId)) { - roles.push(ROLE_MSC_ADMIN); + roles.push(ROLE_ADMIN); } return roles; } @@ -63,12 +63,12 @@ export default class MSCSecurity implements ServiceAuthenticator { } else if (req.query && req.query.access_token) { token = req.query.access_token; } else if (req.query && req.query.scalar_token) { - LogService.warn("MSCSecurity", "Request used old scalar_token auth - this will be removed in a future version"); + LogService.warn("MatrixSecurity", "Request used old scalar_token auth - this will be removed in a future version"); token = req.query.scalar_token; } if (token) { - req.user = { + req.user = { userId: await this.accountController.getTokenOwner(token), token: token, }; @@ -93,7 +93,7 @@ export default class MSCSecurity implements ServiceAuthenticator { } } - if (this.matchesAnyRoute(req, ADMIN_ROUTES, false) && !this.getRoles(req).includes(ROLE_MSC_ADMIN)) { + if (this.matchesAnyRoute(req, ADMIN_ROUTES, false) && !this.getRoles(req).includes(ROLE_ADMIN)) { return res.status(403).json({errcode: "M_UNAUTHORIZED", error: "User is not an admin"}); } @@ -105,7 +105,7 @@ export default class MSCSecurity implements ServiceAuthenticator { if (e instanceof ApiError) { res.status(e.statusCode).json(e.jsonResponse); } else { - LogService.error("MSCSecurity", e); + LogService.error("MatrixSecurity", e); res.status(500).json({errcode: "M_UNKNOWN", error: "Unknown server error"}); } } diff --git a/web/app/shared/services/authed-api.ts b/web/app/shared/services/authed-api.ts index 266a219..92fdee8 100644 --- a/web/app/shared/services/authed-api.ts +++ b/web/app/shared/services/authed-api.ts @@ -3,7 +3,7 @@ import { SessionStorage } from "../SessionStorage"; import { HttpClient } from "@angular/common/http"; export class AuthedApi { - constructor(protected http: HttpClient, private mscAuth = false) { + constructor(protected http: HttpClient, private matrixAuth = false) { } protected authedGet(url: string, qs?: any): Observable { @@ -32,7 +32,7 @@ export class AuthedApi { if (!opts) opts = {}; if (!qs) qs = {}; if (!headers) headers = {}; - if (this.mscAuth) { + if (this.matrixAuth) { headers["Authorization"] = `Bearer ${SessionStorage.scalarToken}`; } else { qs["scalar_token"] = SessionStorage.scalarToken;