import type {
    ResponseResult,
    UserSecurityBindingStatus,
    UserTwoFactorSetup,
} from "../models/AuthModels";
import { ApiHttpClient } from "./ApiHttpClient";

export class UserSecurityService {
    constructor(private readonly http = new ApiHttpClient()) {}

    async bindings() {
        return await this.http.get<UserSecurityBindingStatus>("/api/auth/security-bindings");
    }

    async twoFactorSetup() {
        return await this.http.get<UserTwoFactorSetup>("/api/auth/two-factor/setup");
    }

    async bindTwoFactor(
        pinCode: string,
        setupToken: string,
    ): Promise<ResponseResult<UserSecurityBindingStatus>> {
        return await this.http.post<UserSecurityBindingStatus>("/api/auth/two-factor/bind", {
            pinCode,
            setupToken,
        });
    }

    async unbindTwoFactor(pinCode: string): Promise<ResponseResult<UserSecurityBindingStatus>> {
        return await this.http.post<UserSecurityBindingStatus>("/api/auth/two-factor/unbind", {
            pinCode,
        });
    }
}
评论加载中...