@symanticreative/vendure-admin-client
Version:
A TypeScript GraphQL client for Vendure Admin API to create custom dashboards
83 lines • 3.29 kB
JavaScript
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
import { Injectable } from '../core/di/injectable.decorator';
import { LOGIN_MUTATION, LOGOUT_MUTATION, GET_CURRENT_USER } from '../graphql/auth.queries';
import { gql } from '@apollo/client';
/**
* Repository for authentication operations
*/
let AuthRepository = class AuthRepository {
constructor(graphqlClient) {
this.graphqlClient = graphqlClient;
}
/**
* Login to the Vendure Admin API
* @param credentials - Authentication credentials
* @returns Promise resolving to auth response
*/
async login(credentials) {
try {
const { data } = await this.graphqlClient.getApolloClient().mutate({
mutation: gql(LOGIN_MUTATION),
variables: {
username: credentials.email,
password: credentials.password,
rememberMe: credentials.rememberMe || false
}
});
if (data.login.errorCode) {
throw new Error(`Login failed: ${data.login.message}`);
}
// Mock response until proper JWT handling is implemented
const authResponse = {
token: `mock-token-${Date.now()}`,
refreshToken: credentials.rememberMe ? `mock-refresh-token-${Date.now()}` : undefined,
expires: new Date(Date.now() + 24 * 60 * 60 * 1000).toISOString(),
user: data.login
};
// Update tokens in GraphQL client
this.graphqlClient.setAuthToken(authResponse.token);
if (authResponse.refreshToken) {
this.graphqlClient.setRefreshToken(authResponse.refreshToken);
}
return authResponse;
}
catch (error) {
console.error('Login error:', error);
throw error;
}
}
/**
* Logout from the Vendure Admin API
* @returns Promise resolving to void
*/
async logout() {
if (this.graphqlClient.isAuthenticated()) {
try {
await this.graphqlClient.mutate(LOGOUT_MUTATION);
}
catch (error) {
console.error('Logout error:', error);
}
}
this.graphqlClient.setAuthToken('');
this.graphqlClient.setRefreshToken('');
}
/**
* Get the current authenticated user
* @returns Promise resolving to current user
*/
async getCurrentUser() {
const result = await this.graphqlClient.query(GET_CURRENT_USER);
return result.me;
}
};
AuthRepository = __decorate([
Injectable()
], AuthRepository);
export { AuthRepository };
//# sourceMappingURL=auth.repository.js.map