2019-06-28 03:46:00 +00:00
|
|
|
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";
|
2019-07-11 03:16:04 +00:00
|
|
|
import { ScalarClient } from "../../scalar/ScalarClient";
|
2019-06-28 03:46:00 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* API for account management
|
|
|
|
*/
|
|
|
|
@Path("/_matrix/integrations/v1/account")
|
2019-07-11 04:10:10 +00:00
|
|
|
export class MatrixAccountService {
|
2019-06-28 03:46:00 +00:00
|
|
|
|
|
|
|
@Context
|
|
|
|
private context: ServiceContext;
|
|
|
|
|
|
|
|
@POST
|
|
|
|
@Path("register")
|
|
|
|
public async register(request: OpenId): Promise<IAccountRegisteredResponse> {
|
2021-08-11 21:41:29 +00:00
|
|
|
return new AccountController().registerAccount(request, ScalarClient.KIND_MATRIX_V1);
|
2019-06-28 03:46:00 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
@GET
|
|
|
|
@Path("")
|
2019-07-11 04:10:10 +00:00
|
|
|
@Security(ROLE_USER)
|
2019-06-28 03:46:00 +00:00
|
|
|
public async info(): Promise<IAccountInfoResponse> {
|
2019-07-11 04:10:10 +00:00
|
|
|
const user: ILoggedInUser = this.context.request.user;
|
2019-06-28 03:46:00 +00:00
|
|
|
return {user_id: user.userId};
|
|
|
|
}
|
|
|
|
|
|
|
|
@POST
|
|
|
|
@Path("logout")
|
2019-07-11 04:10:10 +00:00
|
|
|
@Security(ROLE_USER)
|
2019-06-28 03:46:00 +00:00
|
|
|
public async logout(): Promise<any> {
|
2021-08-11 21:41:29 +00:00
|
|
|
await new AccountController().logout(this.context.request.user);
|
2019-06-28 03:46:00 +00:00
|
|
|
return {};
|
|
|
|
}
|
|
|
|
}
|