matrix-dimension/src/api/matrix/MatrixAccountService.ts

37 lines
1.1 KiB
TypeScript
Raw Permalink Normal View History

import { Context, GET, Path, POST, Security, ServiceContext } from "typescript-rest";
import { OpenId } from "../../models/OpenId";
import AccountController, { IAccountInfoResponse, IAccountRegisteredResponse } from "../controllers/AccountController";
2019-07-11 04:10:10 +00:00
import { ILoggedInUser, ROLE_USER } from "../security/MatrixSecurity";
import { ScalarClient } from "../../scalar/ScalarClient";
/**
* API for account management
*/
@Path("/_matrix/integrations/v1/account")
2019-07-11 04:10:10 +00:00
export class MatrixAccountService {
@Context
private context: ServiceContext;
@POST
@Path("register")
public async register(request: OpenId): Promise<IAccountRegisteredResponse> {
return new AccountController().registerAccount(request, ScalarClient.KIND_MATRIX_V1);
}
@GET
@Path("")
2019-07-11 04:10:10 +00:00
@Security(ROLE_USER)
public async info(): Promise<IAccountInfoResponse> {
2019-07-11 04:10:10 +00:00
const user: ILoggedInUser = this.context.request.user;
return {user_id: user.userId};
}
@POST
@Path("logout")
2019-07-11 04:10:10 +00:00
@Security(ROLE_USER)
public async logout(): Promise<any> {
await new AccountController().logout(this.context.request.user);
return {};
}
}