Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 38 additions & 0 deletions packages/web-core/openapi/spec_v2.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -827,6 +827,28 @@ paths:
'204':
description: tbd

/v2/connect/process/clear:
post:
description: Remove process state for a connect process.
operationId: ConnectProcessClear
tags:
- CorbadoConnect
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/connectProcessClearReq'
responses:
'200':
description: Contains information about the process state.
content:
application/json:
schema:
$ref: '#/components/schemas/connectProcessClearRsp'
'404':
description: No process was found for the token

components:
###################################################################
# Security schemes #
Expand Down Expand Up @@ -1486,6 +1508,22 @@ components:
aaguidDetails:
$ref: '#/components/schemas/aaguidDetails'

connectProcessClearReq:
type: object
required:
- processId
properties:
processId:
type: string

connectProcessClearRsp:
type: object
required:
- processId
properties:
processId:
type: string

aaguidDetails:
type: object
required:
Expand Down
98 changes: 98 additions & 0 deletions packages/web-core/src/api/v2/api.ts
Original file line number Diff line number Diff line change
Expand Up @@ -743,6 +743,32 @@ export interface ConnectManageListRsp {
*/
'userID': string;
}
/**
*
* @export
* @interface ConnectProcessClearReq
*/
export interface ConnectProcessClearReq {
/**
*
* @type {string}
* @memberof ConnectProcessClearReq
*/
'processId': string;
}
/**
*
* @export
* @interface ConnectProcessClearRsp
*/
export interface ConnectProcessClearRsp {
/**
*
* @type {string}
* @memberof ConnectProcessClearRsp
*/
'processId': string;
}
/**
*
* @export
Expand Down Expand Up @@ -4368,6 +4394,48 @@ export const CorbadoConnectApiAxiosParamCreator = function (configuration?: Conf
localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
localVarRequestOptions.data = serializeDataIfNeeded(connectManageListReq, localVarRequestOptions, configuration)

return {
url: toPathString(localVarUrlObj),
options: localVarRequestOptions,
};
},
/**
* Remove process state for a connect process.
* @param {ConnectProcessClearReq} connectProcessClearReq
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
connectProcessClear: async (connectProcessClearReq: ConnectProcessClearReq, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
// verify required parameter 'connectProcessClearReq' is not null or undefined
assertParamExists('connectProcessClear', 'connectProcessClearReq', connectProcessClearReq)
const localVarPath = `/v2/connect/process/clear`;
// use dummy base URL string because the URL constructor only accepts absolute URLs.
const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
let baseOptions;
if (configuration) {
baseOptions = configuration.baseOptions;
}

const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options};
const localVarHeaderParameter = {} as any;
const localVarQueryParameter = {} as any;

// authentication bearerAuth required
// http bearer authentication required
await setBearerAuthToObject(localVarHeaderParameter, configuration)

// authentication projectID required
await setApiKeyToObject(localVarHeaderParameter, "X-Corbado-ProjectID", configuration)



localVarHeaderParameter['Content-Type'] = 'application/json';

setSearchParams(localVarUrlObj, localVarQueryParameter);
let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
localVarRequestOptions.data = serializeDataIfNeeded(connectProcessClearReq, localVarRequestOptions, configuration)

return {
url: toPathString(localVarUrlObj),
options: localVarRequestOptions,
Expand Down Expand Up @@ -4483,6 +4551,16 @@ export const CorbadoConnectApiFp = function(configuration?: Configuration) {
const localVarAxiosArgs = await localVarAxiosParamCreator.connectManageList(connectManageListReq, options);
return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
},
/**
* Remove process state for a connect process.
* @param {ConnectProcessClearReq} connectProcessClearReq
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
async connectProcessClear(connectProcessClearReq: ConnectProcessClearReq, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<ConnectProcessClearRsp>> {
const localVarAxiosArgs = await localVarAxiosParamCreator.connectProcessClear(connectProcessClearReq, options);
return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
},
}
};

Expand Down Expand Up @@ -4583,6 +4661,15 @@ export const CorbadoConnectApiFactory = function (configuration?: Configuration,
connectManageList(connectManageListReq: ConnectManageListReq, options?: any): AxiosPromise<ConnectManageListRsp> {
return localVarFp.connectManageList(connectManageListReq, options).then((request) => request(axios, basePath));
},
/**
* Remove process state for a connect process.
* @param {ConnectProcessClearReq} connectProcessClearReq
* @param {*} [options] Override http request option.
* @throws {RequiredError}
*/
connectProcessClear(connectProcessClearReq: ConnectProcessClearReq, options?: any): AxiosPromise<ConnectProcessClearRsp> {
return localVarFp.connectProcessClear(connectProcessClearReq, options).then((request) => request(axios, basePath));
},
};
};

Expand Down Expand Up @@ -4702,6 +4789,17 @@ export class CorbadoConnectApi extends BaseAPI {
public connectManageList(connectManageListReq: ConnectManageListReq, options?: AxiosRequestConfig) {
return CorbadoConnectApiFp(this.configuration).connectManageList(connectManageListReq, options).then((request) => request(this.axios, this.basePath));
}

/**
* Remove process state for a connect process.
* @param {ConnectProcessClearReq} connectProcessClearReq
* @param {*} [options] Override http request option.
* @throws {RequiredError}
* @memberof CorbadoConnectApi
*/
public connectProcessClear(connectProcessClearReq: ConnectProcessClearReq, options?: AxiosRequestConfig) {
return CorbadoConnectApiFp(this.configuration).connectProcessClear(connectProcessClearReq, options).then((request) => request(this.axios, this.basePath));
}
}


Expand Down
6 changes: 5 additions & 1 deletion packages/web-core/src/services/ConnectService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ export class ConnectService {

constructor(projectId: string, frontendApiUrlSuffix: string, isDebug: boolean) {
this.#projectId = projectId;
this.#timeout = 10 * 1000;
this.#timeout = 5 * 1000;
this.#frontendApiUrlSuffix = frontendApiUrlSuffix;
this.#webAuthnService = new WebAuthnService();
this.#visitorId = '';
Expand Down Expand Up @@ -153,6 +153,10 @@ export class ConnectService {
const existingProcessFromOtherLoginInit = ConnectProcess.loadFromStorage(this.#projectId);
const maybeExistingLoginDataFromOtherLoginInit = existingProcessFromOtherLoginInit?.getValidLoginData();
if (maybeExistingLoginDataFromOtherLoginInit) {
if (res.val.token !== existingProcessFromOtherLoginInit?.id) {
await this.#connectApi.connectProcessClear({ processId: res.val.token });
}

log.debug('process exists (after login init attempt');
this.#setApisV2(existingProcessFromOtherLoginInit);

Expand Down
Loading