@accounts/graphql-api
Advanced tools
Comparing version 0.30.0-alpha.1 to 0.30.0
import { GraphQLResolveInfo } from 'graphql'; | ||
export declare type Maybe<T> = T | null; | ||
export declare type Exact<T extends { | ||
[key: string]: unknown; | ||
[key: string]: any; | ||
}> = { | ||
@@ -21,6 +21,2 @@ [K in keyof T]: T[K]; | ||
}; | ||
export declare type AssociateParamsInput = { | ||
_?: Maybe<Scalars['String']>; | ||
}; | ||
export declare type AssociationResult = OtpAssociationResult; | ||
export declare type AuthenticateParamsInput = { | ||
@@ -34,11 +30,2 @@ access_token?: Maybe<Scalars['String']>; | ||
}; | ||
export declare type AuthenticationResult = LoginResult | MultiFactorResult; | ||
export declare type Authenticator = { | ||
__typename?: 'Authenticator'; | ||
id?: Maybe<Scalars['ID']>; | ||
type?: Maybe<Scalars['String']>; | ||
active?: Maybe<Scalars['Boolean']>; | ||
activatedAt?: Maybe<Scalars['String']>; | ||
}; | ||
export declare type ChallengeResult = DefaultChallengeResult; | ||
export declare type CreateUserInput = { | ||
@@ -54,7 +41,2 @@ username?: Maybe<Scalars['String']>; | ||
}; | ||
export declare type DefaultChallengeResult = { | ||
__typename?: 'DefaultChallengeResult'; | ||
mfaToken?: Maybe<Scalars['String']>; | ||
authenticatorId?: Maybe<Scalars['String']>; | ||
}; | ||
export declare type EmailRecord = { | ||
@@ -82,6 +64,2 @@ __typename?: 'EmailRecord'; | ||
}; | ||
export declare type MultiFactorResult = { | ||
__typename?: 'MultiFactorResult'; | ||
mfaToken: Scalars['String']; | ||
}; | ||
export declare type Mutation = { | ||
@@ -98,9 +76,6 @@ __typename?: 'Mutation'; | ||
twoFactorUnset?: Maybe<Scalars['Boolean']>; | ||
challenge?: Maybe<ChallengeResult>; | ||
associate?: Maybe<AssociationResult>; | ||
associateByMfaToken?: Maybe<AssociationResult>; | ||
impersonate?: Maybe<ImpersonateReturn>; | ||
refreshTokens?: Maybe<LoginResult>; | ||
logout?: Maybe<Scalars['Boolean']>; | ||
authenticate?: Maybe<AuthenticationResult>; | ||
authenticate?: Maybe<LoginResult>; | ||
verifyAuthentication?: Maybe<Scalars['Boolean']>; | ||
@@ -138,15 +113,2 @@ }; | ||
}; | ||
export declare type MutationChallengeArgs = { | ||
mfaToken: Scalars['String']; | ||
authenticatorId: Scalars['String']; | ||
}; | ||
export declare type MutationAssociateArgs = { | ||
type: Scalars['String']; | ||
params?: Maybe<AssociateParamsInput>; | ||
}; | ||
export declare type MutationAssociateByMfaTokenArgs = { | ||
mfaToken: Scalars['String']; | ||
type: Scalars['String']; | ||
params?: Maybe<AssociateParamsInput>; | ||
}; | ||
export declare type MutationImpersonateArgs = { | ||
@@ -168,17 +130,7 @@ accessToken: Scalars['String']; | ||
}; | ||
export declare type OtpAssociationResult = { | ||
__typename?: 'OTPAssociationResult'; | ||
mfaToken?: Maybe<Scalars['String']>; | ||
authenticatorId?: Maybe<Scalars['String']>; | ||
}; | ||
export declare type Query = { | ||
__typename?: 'Query'; | ||
twoFactorSecret?: Maybe<TwoFactorSecretKey>; | ||
authenticators?: Maybe<Array<Maybe<Authenticator>>>; | ||
authenticatorsByMfaToken?: Maybe<Array<Maybe<Authenticator>>>; | ||
getUser?: Maybe<User>; | ||
}; | ||
export declare type QueryAuthenticatorsByMfaTokenArgs = { | ||
mfaToken: Scalars['String']; | ||
}; | ||
export declare type Tokens = { | ||
@@ -249,7 +201,6 @@ __typename?: 'Tokens'; | ||
String: ResolverTypeWrapper<Scalars['String']>; | ||
Authenticator: ResolverTypeWrapper<Authenticator>; | ||
User: ResolverTypeWrapper<User>; | ||
ID: ResolverTypeWrapper<Scalars['ID']>; | ||
EmailRecord: ResolverTypeWrapper<EmailRecord>; | ||
Boolean: ResolverTypeWrapper<Scalars['Boolean']>; | ||
User: ResolverTypeWrapper<User>; | ||
EmailRecord: ResolverTypeWrapper<EmailRecord>; | ||
Mutation: ResolverTypeWrapper<{}>; | ||
@@ -261,7 +212,2 @@ CreateUserInput: CreateUserInput; | ||
TwoFactorSecretKeyInput: TwoFactorSecretKeyInput; | ||
ChallengeResult: ResolversTypes['DefaultChallengeResult']; | ||
DefaultChallengeResult: ResolverTypeWrapper<DefaultChallengeResult>; | ||
AssociateParamsInput: AssociateParamsInput; | ||
AssociationResult: ResolversTypes['OTPAssociationResult']; | ||
OTPAssociationResult: ResolverTypeWrapper<OtpAssociationResult>; | ||
ImpersonationUserIdentityInput: ImpersonationUserIdentityInput; | ||
@@ -271,4 +217,2 @@ ImpersonateReturn: ResolverTypeWrapper<ImpersonateReturn>; | ||
UserInput: UserInput; | ||
AuthenticationResult: ResolversTypes['LoginResult'] | ResolversTypes['MultiFactorResult']; | ||
MultiFactorResult: ResolverTypeWrapper<MultiFactorResult>; | ||
}; | ||
@@ -280,7 +224,6 @@ /** Mapping between all available schema types and the resolvers parents */ | ||
String: Scalars['String']; | ||
Authenticator: Authenticator; | ||
User: User; | ||
ID: Scalars['ID']; | ||
EmailRecord: EmailRecord; | ||
Boolean: Scalars['Boolean']; | ||
User: User; | ||
EmailRecord: EmailRecord; | ||
Mutation: {}; | ||
@@ -292,7 +235,2 @@ CreateUserInput: CreateUserInput; | ||
TwoFactorSecretKeyInput: TwoFactorSecretKeyInput; | ||
ChallengeResult: ResolversParentTypes['DefaultChallengeResult']; | ||
DefaultChallengeResult: DefaultChallengeResult; | ||
AssociateParamsInput: AssociateParamsInput; | ||
AssociationResult: ResolversParentTypes['OTPAssociationResult']; | ||
OTPAssociationResult: OtpAssociationResult; | ||
ImpersonationUserIdentityInput: ImpersonationUserIdentityInput; | ||
@@ -302,23 +240,5 @@ ImpersonateReturn: ImpersonateReturn; | ||
UserInput: UserInput; | ||
AuthenticationResult: ResolversParentTypes['LoginResult'] | ResolversParentTypes['MultiFactorResult']; | ||
MultiFactorResult: MultiFactorResult; | ||
}; | ||
export declare type AuthDirectiveArgs = {}; | ||
export declare type AuthDirectiveResolver<Result, Parent, ContextType = any, Args = AuthDirectiveArgs> = DirectiveResolverFn<Result, Parent, ContextType, Args>; | ||
export declare type AssociationResultResolvers<ContextType = any, ParentType extends ResolversParentTypes['AssociationResult'] = ResolversParentTypes['AssociationResult']> = { | ||
__resolveType: TypeResolveFn<'OTPAssociationResult', ParentType, ContextType>; | ||
}; | ||
export declare type AuthenticationResultResolvers<ContextType = any, ParentType extends ResolversParentTypes['AuthenticationResult'] = ResolversParentTypes['AuthenticationResult']> = { | ||
__resolveType: TypeResolveFn<'LoginResult' | 'MultiFactorResult', ParentType, ContextType>; | ||
}; | ||
export declare type AuthenticatorResolvers<ContextType = any, ParentType extends ResolversParentTypes['Authenticator'] = ResolversParentTypes['Authenticator']> = { | ||
id?: Resolver<Maybe<ResolversTypes['ID']>, ParentType, ContextType>; | ||
type?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>; | ||
active?: Resolver<Maybe<ResolversTypes['Boolean']>, ParentType, ContextType>; | ||
activatedAt?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>; | ||
__isTypeOf?: IsTypeOfResolverFn<ParentType>; | ||
}; | ||
export declare type ChallengeResultResolvers<ContextType = any, ParentType extends ResolversParentTypes['ChallengeResult'] = ResolversParentTypes['ChallengeResult']> = { | ||
__resolveType: TypeResolveFn<'DefaultChallengeResult', ParentType, ContextType>; | ||
}; | ||
export declare type CreateUserResultResolvers<ContextType = any, ParentType extends ResolversParentTypes['CreateUserResult'] = ResolversParentTypes['CreateUserResult']> = { | ||
@@ -329,7 +249,2 @@ userId?: Resolver<Maybe<ResolversTypes['ID']>, ParentType, ContextType>; | ||
}; | ||
export declare type DefaultChallengeResultResolvers<ContextType = any, ParentType extends ResolversParentTypes['DefaultChallengeResult'] = ResolversParentTypes['DefaultChallengeResult']> = { | ||
mfaToken?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>; | ||
authenticatorId?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>; | ||
__isTypeOf?: IsTypeOfResolverFn<ParentType>; | ||
}; | ||
export declare type EmailRecordResolvers<ContextType = any, ParentType extends ResolversParentTypes['EmailRecord'] = ResolversParentTypes['EmailRecord']> = { | ||
@@ -352,6 +267,2 @@ address?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>; | ||
}; | ||
export declare type MultiFactorResultResolvers<ContextType = any, ParentType extends ResolversParentTypes['MultiFactorResult'] = ResolversParentTypes['MultiFactorResult']> = { | ||
mfaToken?: Resolver<ResolversTypes['String'], ParentType, ContextType>; | ||
__isTypeOf?: IsTypeOfResolverFn<ParentType>; | ||
}; | ||
export declare type MutationResolvers<ContextType = any, ParentType extends ResolversParentTypes['Mutation'] = ResolversParentTypes['Mutation']> = { | ||
@@ -367,20 +278,10 @@ createUser?: Resolver<Maybe<ResolversTypes['CreateUserResult']>, ParentType, ContextType, RequireFields<MutationCreateUserArgs, 'user'>>; | ||
twoFactorUnset?: Resolver<Maybe<ResolversTypes['Boolean']>, ParentType, ContextType, RequireFields<MutationTwoFactorUnsetArgs, 'code'>>; | ||
challenge?: Resolver<Maybe<ResolversTypes['ChallengeResult']>, ParentType, ContextType, RequireFields<MutationChallengeArgs, 'mfaToken' | 'authenticatorId'>>; | ||
associate?: Resolver<Maybe<ResolversTypes['AssociationResult']>, ParentType, ContextType, RequireFields<MutationAssociateArgs, 'type'>>; | ||
associateByMfaToken?: Resolver<Maybe<ResolversTypes['AssociationResult']>, ParentType, ContextType, RequireFields<MutationAssociateByMfaTokenArgs, 'mfaToken' | 'type'>>; | ||
impersonate?: Resolver<Maybe<ResolversTypes['ImpersonateReturn']>, ParentType, ContextType, RequireFields<MutationImpersonateArgs, 'accessToken' | 'impersonated'>>; | ||
refreshTokens?: Resolver<Maybe<ResolversTypes['LoginResult']>, ParentType, ContextType, RequireFields<MutationRefreshTokensArgs, 'accessToken' | 'refreshToken'>>; | ||
logout?: Resolver<Maybe<ResolversTypes['Boolean']>, ParentType, ContextType>; | ||
authenticate?: Resolver<Maybe<ResolversTypes['AuthenticationResult']>, ParentType, ContextType, RequireFields<MutationAuthenticateArgs, 'serviceName' | 'params'>>; | ||
authenticate?: Resolver<Maybe<ResolversTypes['LoginResult']>, ParentType, ContextType, RequireFields<MutationAuthenticateArgs, 'serviceName' | 'params'>>; | ||
verifyAuthentication?: Resolver<Maybe<ResolversTypes['Boolean']>, ParentType, ContextType, RequireFields<MutationVerifyAuthenticationArgs, 'serviceName' | 'params'>>; | ||
}; | ||
export declare type OtpAssociationResultResolvers<ContextType = any, ParentType extends ResolversParentTypes['OTPAssociationResult'] = ResolversParentTypes['OTPAssociationResult']> = { | ||
mfaToken?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>; | ||
authenticatorId?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>; | ||
__isTypeOf?: IsTypeOfResolverFn<ParentType>; | ||
}; | ||
export declare type QueryResolvers<ContextType = any, ParentType extends ResolversParentTypes['Query'] = ResolversParentTypes['Query']> = { | ||
twoFactorSecret?: Resolver<Maybe<ResolversTypes['TwoFactorSecretKey']>, ParentType, ContextType>; | ||
authenticators?: Resolver<Maybe<Array<Maybe<ResolversTypes['Authenticator']>>>, ParentType, ContextType>; | ||
authenticatorsByMfaToken?: Resolver<Maybe<Array<Maybe<ResolversTypes['Authenticator']>>>, ParentType, ContextType, RequireFields<QueryAuthenticatorsByMfaTokenArgs, 'mfaToken'>>; | ||
getUser?: Resolver<Maybe<ResolversTypes['User']>, ParentType, ContextType>; | ||
@@ -411,14 +312,7 @@ }; | ||
export declare type Resolvers<ContextType = any> = { | ||
AssociationResult?: AssociationResultResolvers<ContextType>; | ||
AuthenticationResult?: AuthenticationResultResolvers<ContextType>; | ||
Authenticator?: AuthenticatorResolvers<ContextType>; | ||
ChallengeResult?: ChallengeResultResolvers<ContextType>; | ||
CreateUserResult?: CreateUserResultResolvers<ContextType>; | ||
DefaultChallengeResult?: DefaultChallengeResultResolvers<ContextType>; | ||
EmailRecord?: EmailRecordResolvers<ContextType>; | ||
ImpersonateReturn?: ImpersonateReturnResolvers<ContextType>; | ||
LoginResult?: LoginResultResolvers<ContextType>; | ||
MultiFactorResult?: MultiFactorResultResolvers<ContextType>; | ||
Mutation?: MutationResolvers<ContextType>; | ||
OTPAssociationResult?: OtpAssociationResultResolvers<ContextType>; | ||
Query?: QueryResolvers<ContextType>; | ||
@@ -425,0 +319,0 @@ Tokens?: TokensResolvers<ContextType>; |
@@ -16,4 +16,2 @@ import { GraphQLModule } from '@graphql-modules/core'; | ||
} | ||
export declare const AccountsPasswordModule: GraphQLModule<AccountsPasswordModuleConfig, AccountsRequest, any, Partial<{ | ||
[key: string]: import("graphql").GraphQLScalarType | import("graphql-tools").IEnumResolver | import("graphql-tools").IResolverOptions<any, any, any> | (() => any) | Partial<import("graphql-tools").IResolverObject<any, any, any>>; | ||
}>>; | ||
export declare const AccountsPasswordModule: GraphQLModule<AccountsPasswordModuleConfig, AccountsRequest>; |
@@ -151,8 +151,26 @@ "use strict"; | ||
return tslib_1.__awaiter(void 0, void 0, void 0, function () { | ||
var accountsServer, accountsPassword, error_2; | ||
return tslib_1.__generator(this, function (_c) { | ||
switch (_c.label) { | ||
case 0: return [4 /*yield*/, injector.get(password_1.AccountsPassword).sendResetPasswordEmail(email)]; | ||
case 0: | ||
accountsServer = injector.get(server_1.AccountsServer); | ||
accountsPassword = injector.get(password_1.AccountsPassword); | ||
_c.label = 1; | ||
case 1: | ||
_c.trys.push([1, 3, , 4]); | ||
return [4 /*yield*/, accountsPassword.sendResetPasswordEmail(email)]; | ||
case 2: | ||
_c.sent(); | ||
return [2 /*return*/, null]; | ||
return [3 /*break*/, 4]; | ||
case 3: | ||
error_2 = _c.sent(); | ||
// If ambiguousErrorMessages is true, | ||
// to prevent user enumeration we fail silently in case there is no user attached to this email | ||
if (accountsServer.options.ambiguousErrorMessages && | ||
error_2 instanceof server_1.AccountsJsError && | ||
error_2.code === password_1.SendResetPasswordEmailErrors.UserNotFound) { | ||
return [2 /*return*/, null]; | ||
} | ||
throw error_2; | ||
case 4: return [2 /*return*/, null]; | ||
} | ||
@@ -180,8 +198,26 @@ }); | ||
return tslib_1.__awaiter(void 0, void 0, void 0, function () { | ||
var accountsServer, accountsPassword, error_3; | ||
return tslib_1.__generator(this, function (_c) { | ||
switch (_c.label) { | ||
case 0: return [4 /*yield*/, injector.get(password_1.AccountsPassword).sendVerificationEmail(email)]; | ||
case 0: | ||
accountsServer = injector.get(server_1.AccountsServer); | ||
accountsPassword = injector.get(password_1.AccountsPassword); | ||
_c.label = 1; | ||
case 1: | ||
_c.trys.push([1, 3, , 4]); | ||
return [4 /*yield*/, accountsPassword.sendVerificationEmail(email)]; | ||
case 2: | ||
_c.sent(); | ||
return [2 /*return*/, null]; | ||
return [3 /*break*/, 4]; | ||
case 3: | ||
error_3 = _c.sent(); | ||
// If ambiguousErrorMessages is true, | ||
// to prevent user enumeration we fail silently in case there is no user attached to this email | ||
if (accountsServer.options.ambiguousErrorMessages && | ||
error_3 instanceof server_1.AccountsJsError && | ||
error_3.code === password_1.SendVerificationEmailErrors.UserNotFound) { | ||
return [2 /*return*/, null]; | ||
} | ||
throw error_3; | ||
case 4: return [2 /*return*/, null]; | ||
} | ||
@@ -188,0 +224,0 @@ }); |
@@ -14,5 +14,4 @@ "use strict"; | ||
var mutation_2 = require("./resolvers/mutation"); | ||
var resolvers_1 = require("./resolvers"); | ||
var user_1 = require("./resolvers/user"); | ||
var accounts_password_1 = require("../accounts-password"); | ||
var accounts_mfa_1 = require("../accounts-mfa"); | ||
var authenticated_directive_1 = require("../../utils/authenticated-directive"); | ||
@@ -37,3 +36,7 @@ var utils_1 = require("../../utils"); | ||
var config = _a.config; | ||
return (tslib_1.__assign((_b = {}, _b[config.rootQueryName || 'Query'] = query_2.Query, _b[config.rootMutationName || 'Mutation'] = mutation_2.Mutation, _b), resolvers_1.resolvers)); | ||
return (_b = {}, | ||
_b[config.rootQueryName || 'Query'] = query_2.Query, | ||
_b[config.rootMutationName || 'Mutation'] = mutation_2.Mutation, | ||
_b.User = user_1.User, | ||
_b); | ||
}, | ||
@@ -47,10 +50,6 @@ // If necessary, import AccountsPasswordModule together with this module | ||
}) | ||
], (config.accountsServer.getService('password') | ||
], (config.accountsServer.getServices().password | ||
? [ | ||
accounts_password_1.AccountsPasswordModule.forRoot(tslib_1.__assign({ accountsPassword: config.accountsServer.getService('password') }, config)), | ||
accounts_password_1.AccountsPasswordModule.forRoot(tslib_1.__assign({ accountsPassword: config.accountsServer.getServices().password }, config)), | ||
] | ||
: []), (config.accountsServer.getService('mfa') | ||
? [ | ||
accounts_mfa_1.AccountsMfaModule.forRoot(tslib_1.__assign({ accountsMfa: config.accountsServer.getService('mfa') }, config)), | ||
] | ||
: [])); | ||
@@ -57,0 +56,0 @@ }, |
@@ -5,4 +5,4 @@ "use strict"; | ||
var graphql_tag_1 = tslib_1.__importDefault(require("graphql-tag")); | ||
exports.default = (function (config) { return graphql_tag_1.default(templateObject_1 || (templateObject_1 = tslib_1.__makeTemplateObject(["\n ", " type ", " {\n impersonate(accessToken: String!, impersonated: ImpersonationUserIdentityInput!): ImpersonateReturn\n refreshTokens(accessToken: String!, refreshToken: String!): LoginResult\n logout: Boolean\n\n # Example: Login with password\n # authenticate(serviceName: \"password\", params: {password: \"<pw>\", user: {email: \"<email>\"}})\n authenticate(serviceName: String!, params: AuthenticateParamsInput!): AuthenticationResult\n verifyAuthentication(serviceName: String!, params: AuthenticateParamsInput!): Boolean\n }\n"], ["\n ", " type ", " {\n impersonate(accessToken: String!, impersonated: ImpersonationUserIdentityInput!): ImpersonateReturn\n refreshTokens(accessToken: String!, refreshToken: String!): LoginResult\n logout: Boolean\n\n # Example: Login with password\n # authenticate(serviceName: \"password\", params: {password: \"<pw>\", user: {email: \"<email>\"}})\n authenticate(serviceName: String!, params: AuthenticateParamsInput!): AuthenticationResult\n verifyAuthentication(serviceName: String!, params: AuthenticateParamsInput!): Boolean\n }\n"])), config.extendTypeDefs ? 'extend' : '', config.rootMutationName || 'Mutation'); }); | ||
exports.default = (function (config) { return graphql_tag_1.default(templateObject_1 || (templateObject_1 = tslib_1.__makeTemplateObject(["\n ", " type ", " {\n impersonate(accessToken: String!, impersonated: ImpersonationUserIdentityInput!): ImpersonateReturn\n refreshTokens(accessToken: String!, refreshToken: String!): LoginResult\n logout: Boolean\n\n # Example: Login with password\n # authenticate(serviceName: \"password\", params: {password: \"<pw>\", user: {email: \"<email>\"}})\n authenticate(serviceName: String!, params: AuthenticateParamsInput!): LoginResult\n verifyAuthentication(serviceName: String!, params: AuthenticateParamsInput!): Boolean\n }\n"], ["\n ", " type ", " {\n impersonate(accessToken: String!, impersonated: ImpersonationUserIdentityInput!): ImpersonateReturn\n refreshTokens(accessToken: String!, refreshToken: String!): LoginResult\n logout: Boolean\n\n # Example: Login with password\n # authenticate(serviceName: \"password\", params: {password: \"<pw>\", user: {email: \"<email>\"}})\n authenticate(serviceName: String!, params: AuthenticateParamsInput!): LoginResult\n verifyAuthentication(serviceName: String!, params: AuthenticateParamsInput!): Boolean\n }\n"])), config.extendTypeDefs ? 'extend' : '', config.rootMutationName || 'Mutation'); }); | ||
var templateObject_1; | ||
//# sourceMappingURL=mutation.js.map |
@@ -5,4 +5,2 @@ import { GraphQLModule } from '@graphql-modules/core'; | ||
} | ||
export declare const CoreAccountsModule: GraphQLModule<CoreAccountsModuleConfig, any, any, Partial<{ | ||
[key: string]: import("graphql").GraphQLScalarType | import("graphql-tools").IEnumResolver | import("graphql-tools").IResolverOptions<any, any, any> | (() => any) | Partial<import("graphql-tools").IResolverObject<any, any, any>>; | ||
}>>; | ||
export declare const CoreAccountsModule: GraphQLModule<CoreAccountsModuleConfig>; |
@@ -7,5 +7,5 @@ "use strict"; | ||
var userAsInterface = _a.userAsInterface; | ||
return graphql_tag_1.default(templateObject_1 || (templateObject_1 = tslib_1.__makeTemplateObject(["\n ", " User {\n id: ID!\n emails: [EmailRecord!]\n username: String\n }\n\n type EmailRecord {\n address: String\n verified: Boolean\n }\n \n type Tokens {\n refreshToken: String\n accessToken: String\n }\n\n type LoginResult {\n sessionId: String\n tokens: Tokens\n user: User\n }\n\n type MultiFactorResult {\n mfaToken: String!\n }\n\n union AuthenticationResult = LoginResult | MultiFactorResult\n"], ["\n ", " User {\n id: ID!\n emails: [EmailRecord!]\n username: String\n }\n\n type EmailRecord {\n address: String\n verified: Boolean\n }\n \n type Tokens {\n refreshToken: String\n accessToken: String\n }\n\n type LoginResult {\n sessionId: String\n tokens: Tokens\n user: User\n }\n\n type MultiFactorResult {\n mfaToken: String!\n }\n\n union AuthenticationResult = LoginResult | MultiFactorResult\n"])), userAsInterface ? 'interface' : 'type'); | ||
return graphql_tag_1.default(templateObject_1 || (templateObject_1 = tslib_1.__makeTemplateObject(["\n ", " User {\n id: ID!\n emails: [EmailRecord!]\n username: String\n }\n\n type EmailRecord {\n address: String\n verified: Boolean\n }\n \n type Tokens {\n refreshToken: String\n accessToken: String\n }\n\n type LoginResult {\n sessionId: String\n tokens: Tokens\n user: User\n }\n"], ["\n ", " User {\n id: ID!\n emails: [EmailRecord!]\n username: String\n }\n\n type EmailRecord {\n address: String\n verified: Boolean\n }\n \n type Tokens {\n refreshToken: String\n accessToken: String\n }\n\n type LoginResult {\n sessionId: String\n tokens: Tokens\n user: User\n }\n"])), userAsInterface ? 'interface' : 'type'); | ||
}); | ||
var templateObject_1; | ||
//# sourceMappingURL=schema.js.map |
export * from './accounts'; | ||
export * from './accounts-password'; | ||
export * from './accounts-mfa'; |
@@ -6,3 +6,2 @@ "use strict"; | ||
tslib_1.__exportStar(require("./accounts-password"), exports); | ||
tslib_1.__exportStar(require("./accounts-mfa"), exports); | ||
//# sourceMappingURL=index.js.map |
@@ -6,5 +6,7 @@ "use strict"; | ||
accountsServer: { | ||
getService: function () { return ({}); }, | ||
getServices: function () { return ({ | ||
password: {}, | ||
}); }, | ||
}, | ||
}).typeDefs; | ||
//# sourceMappingURL=schema.js.map |
@@ -1,2 +0,2 @@ | ||
import { SchemaDirectiveVisitor } from 'graphql-tools'; | ||
import { SchemaDirectiveVisitor } from '@graphql-tools/utils'; | ||
export declare class AuthenticatedDirective extends SchemaDirectiveVisitor { | ||
@@ -3,0 +3,0 @@ visitFieldDefinition(field: any): void; |
@@ -6,3 +6,3 @@ "use strict"; | ||
var authenticated_resolver_1 = require("./authenticated-resolver"); | ||
var graphql_tools_1 = require("graphql-tools"); | ||
var utils_1 = require("@graphql-tools/utils"); | ||
var AuthenticatedDirective = /** @class */ (function (_super) { | ||
@@ -26,4 +26,4 @@ tslib_1.__extends(AuthenticatedDirective, _super); | ||
return AuthenticatedDirective; | ||
}(graphql_tools_1.SchemaDirectiveVisitor)); | ||
}(utils_1.SchemaDirectiveVisitor)); | ||
exports.AuthenticatedDirective = AuthenticatedDirective; | ||
//# sourceMappingURL=authenticated-directive.js.map |
{ | ||
"name": "@accounts/graphql-api", | ||
"version": "0.30.0-alpha.1", | ||
"version": "0.30.0", | ||
"description": "Server side GraphQL transport for accounts", | ||
@@ -36,38 +36,35 @@ "main": "lib/index.js", | ||
"peerDependencies": { | ||
"@accounts/mfa": "^0.29.0", | ||
"@accounts/password": "^0.29.0", | ||
"@accounts/server": "^0.29.0", | ||
"@accounts/types": "^0.29.0", | ||
"@accounts/password": "^0.28.0", | ||
"@accounts/server": "^0.28.0", | ||
"@accounts/types": "^0.28.0", | ||
"@graphql-modules/core": "0.7.17", | ||
"graphql-tag": "^2.10.0", | ||
"graphql-tools": "^5.0.0" | ||
"graphql-tag": "^2.10.0" | ||
}, | ||
"dependencies": { | ||
"@graphql-tools/merge": "6.0.16", | ||
"@graphql-tools/merge": "6.2.5", | ||
"@graphql-tools/utils": "7.0.2", | ||
"request-ip": "2.1.3", | ||
"tslib": "2.0.1" | ||
"tslib": "2.0.0" | ||
}, | ||
"devDependencies": { | ||
"@accounts/mfa": "^0.30.0-alpha.1", | ||
"@accounts/password": "^0.30.0-alpha.1", | ||
"@accounts/server": "^0.30.0-alpha.1", | ||
"@accounts/types": "^0.30.0-alpha.1", | ||
"@graphql-codegen/add": "1.17.7", | ||
"@graphql-codegen/cli": "1.17.7", | ||
"@graphql-codegen/introspection": "1.17.7", | ||
"@graphql-codegen/typescript": "1.17.7", | ||
"@graphql-codegen/typescript-operations": "1.17.7", | ||
"@graphql-codegen/typescript-resolvers": "1.17.7", | ||
"@graphql-codegen/typescript-type-graphql": "1.17.7", | ||
"@accounts/password": "^0.30.0", | ||
"@accounts/server": "^0.30.0", | ||
"@accounts/types": "^0.30.0", | ||
"@graphql-codegen/add": "1.17.4", | ||
"@graphql-codegen/cli": "1.17.4", | ||
"@graphql-codegen/introspection": "1.17.4", | ||
"@graphql-codegen/typescript": "1.17.4", | ||
"@graphql-codegen/typescript-operations": "1.17.4", | ||
"@graphql-codegen/typescript-resolvers": "1.17.4", | ||
"@graphql-codegen/typescript-type-graphql": "1.17.4", | ||
"@graphql-modules/core": "0.7.17", | ||
"@types/jest": "26.0.9", | ||
"@types/jest": "25.2.3", | ||
"@types/request-ip": "0.0.35", | ||
"concurrently": "5.3.0", | ||
"graphql": "14.7.0", | ||
"graphql-tools": "5.0.0", | ||
"jest": "26.3.0", | ||
"lodash": "4.17.20", | ||
"ts-node": "8.10.2" | ||
"concurrently": "5.2.0", | ||
"graphql": "14.6.0", | ||
"jest": "26.6.3", | ||
"ts-jest": "26.4.4", | ||
"ts-node": "8.10.1" | ||
}, | ||
"gitHead": "eb9750193707aecb771b63d29540a8b6c316ebe0" | ||
"gitHead": "a883d3b90c481e9c73a7655ef2aadac092fc6b0e" | ||
} |
@@ -62,3 +62,3 @@ # @accounts/graphql-api | ||
```js | ||
import { makeExecutableSchema } from 'graphql-tools'; | ||
import { makeExecutableSchema } from '@graphql-tools/schema'; | ||
import { mergeGraphQLSchemas, mergeResolvers } from '@graphql-tools/epoxy'; | ||
@@ -131,3 +131,3 @@ | ||
Mutation: { | ||
updateUserProfile: authenticated(AccountsServer, (rootValue, args, context) => { | ||
updateUserProfile: authenticated((rootValue, args, context) => { | ||
// Write your resolver here | ||
@@ -134,0 +134,0 @@ // context.user - the current authenticated user! |
/* eslint-disable */ | ||
import { GraphQLResolveInfo } from 'graphql'; | ||
export type Maybe<T> = T | null; | ||
export type Exact<T extends { [key: string]: unknown }> = { [K in keyof T]: T[K] }; | ||
export type Exact<T extends { [key: string]: any }> = { [K in keyof T]: T[K] }; | ||
export type RequireFields<T, K extends keyof T> = { [X in Exclude<keyof T, K>]?: T[X] } & { [P in K]-?: NonNullable<T[P]> }; | ||
@@ -17,8 +17,2 @@ | ||
export type AssociateParamsInput = { | ||
_?: Maybe<Scalars['String']>; | ||
}; | ||
export type AssociationResult = OtpAssociationResult; | ||
export type AuthenticateParamsInput = { | ||
@@ -33,14 +27,2 @@ access_token?: Maybe<Scalars['String']>; | ||
export type AuthenticationResult = LoginResult | MultiFactorResult; | ||
export type Authenticator = { | ||
__typename?: 'Authenticator'; | ||
id?: Maybe<Scalars['ID']>; | ||
type?: Maybe<Scalars['String']>; | ||
active?: Maybe<Scalars['Boolean']>; | ||
activatedAt?: Maybe<Scalars['String']>; | ||
}; | ||
export type ChallengeResult = DefaultChallengeResult; | ||
export type CreateUserInput = { | ||
@@ -58,8 +40,2 @@ username?: Maybe<Scalars['String']>; | ||
export type DefaultChallengeResult = { | ||
__typename?: 'DefaultChallengeResult'; | ||
mfaToken?: Maybe<Scalars['String']>; | ||
authenticatorId?: Maybe<Scalars['String']>; | ||
}; | ||
export type EmailRecord = { | ||
@@ -91,7 +67,2 @@ __typename?: 'EmailRecord'; | ||
export type MultiFactorResult = { | ||
__typename?: 'MultiFactorResult'; | ||
mfaToken: Scalars['String']; | ||
}; | ||
export type Mutation = { | ||
@@ -108,9 +79,6 @@ __typename?: 'Mutation'; | ||
twoFactorUnset?: Maybe<Scalars['Boolean']>; | ||
challenge?: Maybe<ChallengeResult>; | ||
associate?: Maybe<AssociationResult>; | ||
associateByMfaToken?: Maybe<AssociationResult>; | ||
impersonate?: Maybe<ImpersonateReturn>; | ||
refreshTokens?: Maybe<LoginResult>; | ||
logout?: Maybe<Scalars['Boolean']>; | ||
authenticate?: Maybe<AuthenticationResult>; | ||
authenticate?: Maybe<LoginResult>; | ||
verifyAuthentication?: Maybe<Scalars['Boolean']>; | ||
@@ -168,21 +136,2 @@ }; | ||
export type MutationChallengeArgs = { | ||
mfaToken: Scalars['String']; | ||
authenticatorId: Scalars['String']; | ||
}; | ||
export type MutationAssociateArgs = { | ||
type: Scalars['String']; | ||
params?: Maybe<AssociateParamsInput>; | ||
}; | ||
export type MutationAssociateByMfaTokenArgs = { | ||
mfaToken: Scalars['String']; | ||
type: Scalars['String']; | ||
params?: Maybe<AssociateParamsInput>; | ||
}; | ||
export type MutationImpersonateArgs = { | ||
@@ -211,21 +160,8 @@ accessToken: Scalars['String']; | ||
export type OtpAssociationResult = { | ||
__typename?: 'OTPAssociationResult'; | ||
mfaToken?: Maybe<Scalars['String']>; | ||
authenticatorId?: Maybe<Scalars['String']>; | ||
}; | ||
export type Query = { | ||
__typename?: 'Query'; | ||
twoFactorSecret?: Maybe<TwoFactorSecretKey>; | ||
authenticators?: Maybe<Array<Maybe<Authenticator>>>; | ||
authenticatorsByMfaToken?: Maybe<Array<Maybe<Authenticator>>>; | ||
getUser?: Maybe<User>; | ||
}; | ||
export type QueryAuthenticatorsByMfaTokenArgs = { | ||
mfaToken: Scalars['String']; | ||
}; | ||
export type Tokens = { | ||
@@ -341,7 +277,6 @@ __typename?: 'Tokens'; | ||
String: ResolverTypeWrapper<Scalars['String']>; | ||
Authenticator: ResolverTypeWrapper<Authenticator>; | ||
User: ResolverTypeWrapper<User>; | ||
ID: ResolverTypeWrapper<Scalars['ID']>; | ||
EmailRecord: ResolverTypeWrapper<EmailRecord>; | ||
Boolean: ResolverTypeWrapper<Scalars['Boolean']>; | ||
User: ResolverTypeWrapper<User>; | ||
EmailRecord: ResolverTypeWrapper<EmailRecord>; | ||
Mutation: ResolverTypeWrapper<{}>; | ||
@@ -353,7 +288,2 @@ CreateUserInput: CreateUserInput; | ||
TwoFactorSecretKeyInput: TwoFactorSecretKeyInput; | ||
ChallengeResult: ResolversTypes['DefaultChallengeResult']; | ||
DefaultChallengeResult: ResolverTypeWrapper<DefaultChallengeResult>; | ||
AssociateParamsInput: AssociateParamsInput; | ||
AssociationResult: ResolversTypes['OTPAssociationResult']; | ||
OTPAssociationResult: ResolverTypeWrapper<OtpAssociationResult>; | ||
ImpersonationUserIdentityInput: ImpersonationUserIdentityInput; | ||
@@ -363,4 +293,2 @@ ImpersonateReturn: ResolverTypeWrapper<ImpersonateReturn>; | ||
UserInput: UserInput; | ||
AuthenticationResult: ResolversTypes['LoginResult'] | ResolversTypes['MultiFactorResult']; | ||
MultiFactorResult: ResolverTypeWrapper<MultiFactorResult>; | ||
}; | ||
@@ -373,7 +301,6 @@ | ||
String: Scalars['String']; | ||
Authenticator: Authenticator; | ||
User: User; | ||
ID: Scalars['ID']; | ||
EmailRecord: EmailRecord; | ||
Boolean: Scalars['Boolean']; | ||
User: User; | ||
EmailRecord: EmailRecord; | ||
Mutation: {}; | ||
@@ -385,7 +312,2 @@ CreateUserInput: CreateUserInput; | ||
TwoFactorSecretKeyInput: TwoFactorSecretKeyInput; | ||
ChallengeResult: ResolversParentTypes['DefaultChallengeResult']; | ||
DefaultChallengeResult: DefaultChallengeResult; | ||
AssociateParamsInput: AssociateParamsInput; | ||
AssociationResult: ResolversParentTypes['OTPAssociationResult']; | ||
OTPAssociationResult: OtpAssociationResult; | ||
ImpersonationUserIdentityInput: ImpersonationUserIdentityInput; | ||
@@ -395,4 +317,2 @@ ImpersonateReturn: ImpersonateReturn; | ||
UserInput: UserInput; | ||
AuthenticationResult: ResolversParentTypes['LoginResult'] | ResolversParentTypes['MultiFactorResult']; | ||
MultiFactorResult: MultiFactorResult; | ||
}; | ||
@@ -404,22 +324,2 @@ | ||
export type AssociationResultResolvers<ContextType = any, ParentType extends ResolversParentTypes['AssociationResult'] = ResolversParentTypes['AssociationResult']> = { | ||
__resolveType: TypeResolveFn<'OTPAssociationResult', ParentType, ContextType>; | ||
}; | ||
export type AuthenticationResultResolvers<ContextType = any, ParentType extends ResolversParentTypes['AuthenticationResult'] = ResolversParentTypes['AuthenticationResult']> = { | ||
__resolveType: TypeResolveFn<'LoginResult' | 'MultiFactorResult', ParentType, ContextType>; | ||
}; | ||
export type AuthenticatorResolvers<ContextType = any, ParentType extends ResolversParentTypes['Authenticator'] = ResolversParentTypes['Authenticator']> = { | ||
id?: Resolver<Maybe<ResolversTypes['ID']>, ParentType, ContextType>; | ||
type?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>; | ||
active?: Resolver<Maybe<ResolversTypes['Boolean']>, ParentType, ContextType>; | ||
activatedAt?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>; | ||
__isTypeOf?: IsTypeOfResolverFn<ParentType>; | ||
}; | ||
export type ChallengeResultResolvers<ContextType = any, ParentType extends ResolversParentTypes['ChallengeResult'] = ResolversParentTypes['ChallengeResult']> = { | ||
__resolveType: TypeResolveFn<'DefaultChallengeResult', ParentType, ContextType>; | ||
}; | ||
export type CreateUserResultResolvers<ContextType = any, ParentType extends ResolversParentTypes['CreateUserResult'] = ResolversParentTypes['CreateUserResult']> = { | ||
@@ -431,8 +331,2 @@ userId?: Resolver<Maybe<ResolversTypes['ID']>, ParentType, ContextType>; | ||
export type DefaultChallengeResultResolvers<ContextType = any, ParentType extends ResolversParentTypes['DefaultChallengeResult'] = ResolversParentTypes['DefaultChallengeResult']> = { | ||
mfaToken?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>; | ||
authenticatorId?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>; | ||
__isTypeOf?: IsTypeOfResolverFn<ParentType>; | ||
}; | ||
export type EmailRecordResolvers<ContextType = any, ParentType extends ResolversParentTypes['EmailRecord'] = ResolversParentTypes['EmailRecord']> = { | ||
@@ -458,7 +352,2 @@ address?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>; | ||
export type MultiFactorResultResolvers<ContextType = any, ParentType extends ResolversParentTypes['MultiFactorResult'] = ResolversParentTypes['MultiFactorResult']> = { | ||
mfaToken?: Resolver<ResolversTypes['String'], ParentType, ContextType>; | ||
__isTypeOf?: IsTypeOfResolverFn<ParentType>; | ||
}; | ||
export type MutationResolvers<ContextType = any, ParentType extends ResolversParentTypes['Mutation'] = ResolversParentTypes['Mutation']> = { | ||
@@ -474,22 +363,11 @@ createUser?: Resolver<Maybe<ResolversTypes['CreateUserResult']>, ParentType, ContextType, RequireFields<MutationCreateUserArgs, 'user'>>; | ||
twoFactorUnset?: Resolver<Maybe<ResolversTypes['Boolean']>, ParentType, ContextType, RequireFields<MutationTwoFactorUnsetArgs, 'code'>>; | ||
challenge?: Resolver<Maybe<ResolversTypes['ChallengeResult']>, ParentType, ContextType, RequireFields<MutationChallengeArgs, 'mfaToken' | 'authenticatorId'>>; | ||
associate?: Resolver<Maybe<ResolversTypes['AssociationResult']>, ParentType, ContextType, RequireFields<MutationAssociateArgs, 'type'>>; | ||
associateByMfaToken?: Resolver<Maybe<ResolversTypes['AssociationResult']>, ParentType, ContextType, RequireFields<MutationAssociateByMfaTokenArgs, 'mfaToken' | 'type'>>; | ||
impersonate?: Resolver<Maybe<ResolversTypes['ImpersonateReturn']>, ParentType, ContextType, RequireFields<MutationImpersonateArgs, 'accessToken' | 'impersonated'>>; | ||
refreshTokens?: Resolver<Maybe<ResolversTypes['LoginResult']>, ParentType, ContextType, RequireFields<MutationRefreshTokensArgs, 'accessToken' | 'refreshToken'>>; | ||
logout?: Resolver<Maybe<ResolversTypes['Boolean']>, ParentType, ContextType>; | ||
authenticate?: Resolver<Maybe<ResolversTypes['AuthenticationResult']>, ParentType, ContextType, RequireFields<MutationAuthenticateArgs, 'serviceName' | 'params'>>; | ||
authenticate?: Resolver<Maybe<ResolversTypes['LoginResult']>, ParentType, ContextType, RequireFields<MutationAuthenticateArgs, 'serviceName' | 'params'>>; | ||
verifyAuthentication?: Resolver<Maybe<ResolversTypes['Boolean']>, ParentType, ContextType, RequireFields<MutationVerifyAuthenticationArgs, 'serviceName' | 'params'>>; | ||
}; | ||
export type OtpAssociationResultResolvers<ContextType = any, ParentType extends ResolversParentTypes['OTPAssociationResult'] = ResolversParentTypes['OTPAssociationResult']> = { | ||
mfaToken?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>; | ||
authenticatorId?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>; | ||
__isTypeOf?: IsTypeOfResolverFn<ParentType>; | ||
}; | ||
export type QueryResolvers<ContextType = any, ParentType extends ResolversParentTypes['Query'] = ResolversParentTypes['Query']> = { | ||
twoFactorSecret?: Resolver<Maybe<ResolversTypes['TwoFactorSecretKey']>, ParentType, ContextType>; | ||
authenticators?: Resolver<Maybe<Array<Maybe<ResolversTypes['Authenticator']>>>, ParentType, ContextType>; | ||
authenticatorsByMfaToken?: Resolver<Maybe<Array<Maybe<ResolversTypes['Authenticator']>>>, ParentType, ContextType, RequireFields<QueryAuthenticatorsByMfaTokenArgs, 'mfaToken'>>; | ||
getUser?: Resolver<Maybe<ResolversTypes['User']>, ParentType, ContextType>; | ||
@@ -524,14 +402,7 @@ }; | ||
export type Resolvers<ContextType = any> = { | ||
AssociationResult?: AssociationResultResolvers<ContextType>; | ||
AuthenticationResult?: AuthenticationResultResolvers<ContextType>; | ||
Authenticator?: AuthenticatorResolvers<ContextType>; | ||
ChallengeResult?: ChallengeResultResolvers<ContextType>; | ||
CreateUserResult?: CreateUserResultResolvers<ContextType>; | ||
DefaultChallengeResult?: DefaultChallengeResultResolvers<ContextType>; | ||
EmailRecord?: EmailRecordResolvers<ContextType>; | ||
ImpersonateReturn?: ImpersonateReturnResolvers<ContextType>; | ||
LoginResult?: LoginResultResolvers<ContextType>; | ||
MultiFactorResult?: MultiFactorResultResolvers<ContextType>; | ||
Mutation?: MutationResolvers<ContextType>; | ||
OTPAssociationResult?: OtpAssociationResultResolvers<ContextType>; | ||
Query?: QueryResolvers<ContextType>; | ||
@@ -538,0 +409,0 @@ Tokens?: TokensResolvers<ContextType>; |
@@ -25,6 +25,6 @@ import { GraphQLModule } from '@graphql-modules/core'; | ||
export const AccountsPasswordModule = new GraphQLModule< | ||
export const AccountsPasswordModule: GraphQLModule< | ||
AccountsPasswordModuleConfig, | ||
AccountsRequest | ||
>({ | ||
> = new GraphQLModule<AccountsPasswordModuleConfig, AccountsRequest>({ | ||
name: 'accounts-password', | ||
@@ -31,0 +31,0 @@ typeDefs: ({ config }) => [TypesTypeDefs, getQueryTypeDefs(config), getMutationTypeDefs(config)], |
import { ModuleContext } from '@graphql-modules/core'; | ||
import { CreateUserServicePassword } from '@accounts/types'; | ||
import { AccountsPassword, CreateUserErrors } from '@accounts/password'; | ||
import { | ||
AccountsPassword, | ||
CreateUserErrors, | ||
SendResetPasswordEmailErrors, | ||
SendVerificationEmailErrors, | ||
} from '@accounts/password'; | ||
import { AccountsServer, AccountsJsError } from '@accounts/server'; | ||
@@ -96,3 +101,20 @@ import { AccountsModuleContext } from '../../accounts'; | ||
sendResetPasswordEmail: async (_, { email }, { injector }) => { | ||
await injector.get(AccountsPassword).sendResetPasswordEmail(email); | ||
const accountsServer = injector.get(AccountsServer); | ||
const accountsPassword = injector.get(AccountsPassword); | ||
try { | ||
await accountsPassword.sendResetPasswordEmail(email); | ||
} catch (error) { | ||
// If ambiguousErrorMessages is true, | ||
// to prevent user enumeration we fail silently in case there is no user attached to this email | ||
if ( | ||
accountsServer.options.ambiguousErrorMessages && | ||
error instanceof AccountsJsError && | ||
error.code === SendResetPasswordEmailErrors.UserNotFound | ||
) { | ||
return null; | ||
} | ||
throw error; | ||
} | ||
return null; | ||
@@ -105,5 +127,21 @@ }, | ||
sendVerificationEmail: async (_, { email }, { injector }) => { | ||
await injector.get(AccountsPassword).sendVerificationEmail(email); | ||
const accountsServer = injector.get(AccountsServer); | ||
const accountsPassword = injector.get(AccountsPassword); | ||
try { | ||
await accountsPassword.sendVerificationEmail(email); | ||
} catch (error) { | ||
// If ambiguousErrorMessages is true, | ||
// to prevent user enumeration we fail silently in case there is no user attached to this email | ||
if ( | ||
accountsServer.options.ambiguousErrorMessages && | ||
error instanceof AccountsJsError && | ||
error.code === SendVerificationEmailErrors.UserNotFound | ||
) { | ||
return null; | ||
} | ||
throw error; | ||
} | ||
return null; | ||
}, | ||
}; |
@@ -5,4 +5,3 @@ import { GraphQLModule } from '@graphql-modules/core'; | ||
import { AccountsServer } from '@accounts/server'; | ||
import { AccountsPassword } from '@accounts/password'; | ||
import { AccountsMfa } from '@accounts/mfa'; | ||
import AccountsPassword from '@accounts/password'; | ||
import { IncomingMessage } from 'http'; | ||
@@ -15,5 +14,4 @@ import TypesTypeDefs from './schema/types'; | ||
import { Mutation } from './resolvers/mutation'; | ||
import { resolvers as CustomResolvers } from './resolvers'; | ||
import { User as UserResolvers } from './resolvers/user'; | ||
import { AccountsPasswordModule } from '../accounts-password'; | ||
import { AccountsMfaModule } from '../accounts-mfa'; | ||
import { AuthenticatedDirective } from '../../utils/authenticated-directive'; | ||
@@ -71,3 +69,3 @@ import { context } from '../../utils'; | ||
[config.rootMutationName || 'Mutation']: Mutation, | ||
...CustomResolvers, | ||
User: UserResolvers, | ||
} as any), | ||
@@ -79,6 +77,6 @@ // If necessary, import AccountsPasswordModule together with this module | ||
}), | ||
...(config.accountsServer.getService('password') | ||
...(config.accountsServer.getServices().password | ||
? [ | ||
AccountsPasswordModule.forRoot({ | ||
accountsPassword: config.accountsServer.getService('password') as AccountsPassword, | ||
accountsPassword: config.accountsServer.getServices().password as AccountsPassword, | ||
...config, | ||
@@ -88,10 +86,2 @@ }), | ||
: []), | ||
...(config.accountsServer.getService('mfa') | ||
? [ | ||
AccountsMfaModule.forRoot({ | ||
accountsMfa: config.accountsServer.getService('mfa') as AccountsMfa, | ||
...config, | ||
}), | ||
] | ||
: []), | ||
], | ||
@@ -98,0 +88,0 @@ providers: ({ config }) => [ |
@@ -12,5 +12,5 @@ import gql from 'graphql-tag'; | ||
# authenticate(serviceName: "password", params: {password: "<pw>", user: {email: "<email>"}}) | ||
authenticate(serviceName: String!, params: AuthenticateParamsInput!): AuthenticationResult | ||
authenticate(serviceName: String!, params: AuthenticateParamsInput!): LoginResult | ||
verifyAuthentication(serviceName: String!, params: AuthenticateParamsInput!): Boolean | ||
} | ||
`; |
@@ -8,6 +8,8 @@ import { GraphQLModule } from '@graphql-modules/core'; | ||
export const CoreAccountsModule = new GraphQLModule<CoreAccountsModuleConfig>({ | ||
typeDefs: ({ config }) => makeSchema(config), | ||
resolvers: {}, | ||
imports: [], | ||
}); | ||
export const CoreAccountsModule: GraphQLModule<CoreAccountsModuleConfig> = new GraphQLModule<CoreAccountsModuleConfig>( | ||
{ | ||
typeDefs: ({ config }) => makeSchema(config), | ||
resolvers: {}, | ||
imports: [], | ||
} | ||
); |
@@ -26,8 +26,2 @@ import gql from 'graphql-tag'; | ||
} | ||
type MultiFactorResult { | ||
mfaToken: String! | ||
} | ||
union AuthenticationResult = LoginResult | MultiFactorResult | ||
`; |
export * from './accounts'; | ||
export * from './accounts-password'; | ||
export * from './accounts-mfa'; |
@@ -5,4 +5,6 @@ import { AccountsModule } from './modules'; | ||
accountsServer: { | ||
getService: () => ({}), | ||
getServices: () => ({ | ||
password: {}, | ||
}), | ||
} as any, | ||
}).typeDefs; |
import { authenticated } from './authenticated-resolver'; | ||
import { SchemaDirectiveVisitor } from 'graphql-tools'; | ||
import { SchemaDirectiveVisitor } from '@graphql-tools/utils'; | ||
export class AuthenticatedDirective extends SchemaDirectiveVisitor { | ||
@@ -4,0 +5,0 @@ public visitFieldDefinition(field: any) { |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Minified code
QualityThis package contains minified code. This may be harmless in some cases where minified code is included in packaged libraries, however packages on npm should not minify code.
Found 1 instance in 1 package
9
18
6
119349
99
2079
+ Added@graphql-tools/utils@7.0.2
+ Added@accounts/password@0.28.0(transitive)
+ Added@accounts/server@0.28.0(transitive)
+ Added@accounts/two-factor@0.28.0(transitive)
+ Added@accounts/types@0.28.0(transitive)
+ Added@ardatan/aggregate-error@0.0.6(transitive)
+ Added@graphql-tools/merge@6.2.5(transitive)
+ Added@graphql-tools/schema@7.1.5(transitive)
+ Added@graphql-tools/utils@7.0.27.10.0(transitive)
+ Addedcamel-case@4.1.2(transitive)
+ Addedtslib@2.0.32.2.0(transitive)
+ Addedvalue-or-promise@1.0.6(transitive)
- Removed@accounts/password@0.29.0(transitive)
- Removed@accounts/server@0.29.0(transitive)
- Removed@accounts/two-factor@0.29.0(transitive)
- Removed@accounts/types@0.29.0(transitive)
- Removed@ardatan/aggregate-error@0.0.1(transitive)
- Removed@graphql-tools/merge@6.0.16(transitive)
- Removed@graphql-tools/schema@6.0.16(transitive)
- Removed@graphql-tools/utils@6.0.16(transitive)
- Removedtslib@2.0.1(transitive)
Updated@graphql-tools/merge@6.2.5
Updatedtslib@2.0.0