createSession method

Future<AuthUserSessionDto> createSession(
  1. CreateSessionRequest request
)

Implementation

Future<AuthUserSessionDto> createSession(CreateSessionRequest request) async {
  _ensureInitialised();

  if (_useMockData) {
    await Future.delayed(const Duration(milliseconds: 500));
    // Return a mock session specifically for the requested user
    return AuthUserSessionDto.fromJson(_generateMockSession(request.userId));
  }

  try {
    final client = await _createClientWithAuthHeaders();
    final response = await client.post(
      url: '$_sessionServiceUrl/userSession/api/session/createUserSession',
      requestData: request.toJson(),
      user: _user,
    );

    if (response?.statusCode == 200 && response?.data != null) {
      return AuthUserSessionDto.fromJson(response!.data['sessionResult']);
    } else {
      throw AuthException(
        AuthenticationErrorCodes.sessionCreationFailed,
        cause: response?.data,
      );
    }
  } catch (e, s) {
    logger.error(
      this,
      'Exception while creating session',
      error: e,
      stackTrace: s,
    );
    rethrow;
  }
}