name-password-strategy-option.js 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180
  1. /**
  2. * @fileoverview added by tsickle
  3. * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
  4. */
  5. import { NbAuthStrategyOptions } from '@nebular/auth';
  6. import { getDeepFromObject } from '../helper';
  7. /**
  8. * @record
  9. */
  10. export function NamePasswordStrategyModule() { }
  11. if (false) {
  12. /** @type {?|undefined} */
  13. NamePasswordStrategyModule.prototype.alwaysFail;
  14. /** @type {?|undefined} */
  15. NamePasswordStrategyModule.prototype.endpoint;
  16. /** @type {?|undefined} */
  17. NamePasswordStrategyModule.prototype.method;
  18. /** @type {?|undefined} */
  19. NamePasswordStrategyModule.prototype.redirect;
  20. /** @type {?|undefined} */
  21. NamePasswordStrategyModule.prototype.defaultErrors;
  22. /** @type {?|undefined} */
  23. NamePasswordStrategyModule.prototype.defaultMessages;
  24. }
  25. /**
  26. * @record
  27. */
  28. export function NamePasswordStrategySuccess() { }
  29. if (false) {
  30. /** @type {?|undefined} */
  31. NamePasswordStrategySuccess.prototype.key;
  32. /** @type {?|undefined} */
  33. NamePasswordStrategySuccess.prototype.getter;
  34. }
  35. /**
  36. * @record
  37. */
  38. export function NamePasswordStrategyMessage() { }
  39. if (false) {
  40. /** @type {?|undefined} */
  41. NamePasswordStrategyMessage.prototype.key;
  42. /** @type {?|undefined} */
  43. NamePasswordStrategyMessage.prototype.getter;
  44. }
  45. export class NamePasswordAuthStrategyOptions extends NbAuthStrategyOptions {
  46. constructor() {
  47. super(...arguments);
  48. this.baseEndpoint = '/api/auth/';
  49. this.getPublicKey = {
  50. endpoint: 'getPublicKey',
  51. method: 'get'
  52. };
  53. this.login = {
  54. alwaysFail: false,
  55. endpoint: 'login',
  56. method: 'post',
  57. redirect: {
  58. success: '/',
  59. failure: null
  60. },
  61. defaultErrors: ['未知错误!'],
  62. defaultMessages: ['You have been successfully logged in.']
  63. };
  64. this.createUser = {
  65. endpoint: 'createUser',
  66. method: 'post',
  67. defaultErrors: ['未知错误!']
  68. };
  69. this.updatePasswordForAdmin = {
  70. endpoint: 'updatePasswordForAdmin',
  71. method: 'patch',
  72. defaultErrors: ['未知错误!']
  73. };
  74. this.register = {
  75. alwaysFail: false,
  76. endpoint: 'register',
  77. method: 'post',
  78. redirect: {
  79. success: '/',
  80. failure: null
  81. },
  82. defaultErrors: ['Something went wrong, please try again.'],
  83. defaultMessages: ['You have been successfully registered.']
  84. };
  85. this.requestPass = {
  86. endpoint: 'request-pass',
  87. method: 'post',
  88. redirect: {
  89. success: '/',
  90. failure: null
  91. },
  92. defaultErrors: ['Something went wrong, please try again.'],
  93. defaultMessages: ['Reset password instructions have been sent to your email.']
  94. };
  95. this.resetPass = {
  96. endpoint: 'updateUserPassword',
  97. method: 'patch',
  98. redirect: {
  99. success: '/',
  100. failure: null
  101. },
  102. defaultErrors: ['未知错误.'],
  103. defaultMessages: ['Your password has been successfully changed.']
  104. };
  105. this.logout = {
  106. alwaysFail: false,
  107. endpoint: 'logout',
  108. method: 'delete',
  109. redirect: {
  110. success: '/',
  111. failure: null
  112. },
  113. defaultErrors: ['Something went wrong, please try again.'],
  114. defaultMessages: ['You have been successfully logged out.']
  115. };
  116. this.errors = {
  117. key: 'messager',
  118. getter: (/**
  119. * @param {?} module
  120. * @param {?} res
  121. * @param {?} options
  122. * @return {?}
  123. */
  124. (module, res, options) => [
  125. getDeepFromObject(res.error, options.errors.key, options[module].defaultErrors)
  126. ])
  127. };
  128. this.messages = {
  129. key: 'messager',
  130. getter: (/**
  131. * @param {?} module
  132. * @param {?} res
  133. * @param {?} options
  134. * @return {?}
  135. */
  136. (module, res, options) => [getDeepFromObject(res.body, options.messages.key, false)])
  137. };
  138. this.success = {
  139. key: 'success',
  140. getter: (/**
  141. * @param {?} module
  142. * @param {?} res
  143. * @param {?} options
  144. * @return {?}
  145. */
  146. (module, res, options) => getDeepFromObject(res.body, options.success.key, options[module].defaultMessages))
  147. };
  148. }
  149. }
  150. if (false) {
  151. /** @type {?} */
  152. NamePasswordAuthStrategyOptions.prototype.baseEndpoint;
  153. /** @type {?} */
  154. NamePasswordAuthStrategyOptions.prototype.getPublicKey;
  155. /** @type {?} */
  156. NamePasswordAuthStrategyOptions.prototype.login;
  157. /** @type {?} */
  158. NamePasswordAuthStrategyOptions.prototype.createUser;
  159. /** @type {?} */
  160. NamePasswordAuthStrategyOptions.prototype.updatePasswordForAdmin;
  161. /** @type {?} */
  162. NamePasswordAuthStrategyOptions.prototype.register;
  163. /** @type {?} */
  164. NamePasswordAuthStrategyOptions.prototype.requestPass;
  165. /** @type {?} */
  166. NamePasswordAuthStrategyOptions.prototype.resetPass;
  167. /** @type {?} */
  168. NamePasswordAuthStrategyOptions.prototype.logout;
  169. /** @type {?} */
  170. NamePasswordAuthStrategyOptions.prototype.errors;
  171. /** @type {?} */
  172. NamePasswordAuthStrategyOptions.prototype.messages;
  173. /** @type {?} */
  174. NamePasswordAuthStrategyOptions.prototype.success;
  175. /** @type {?} */
  176. NamePasswordAuthStrategyOptions.prototype.validation;
  177. }
  178. /** @type {?} */
  179. export const namePasswordStrategyOptions = new NamePasswordAuthStrategyOptions();
  180. //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmFtZS1wYXNzd29yZC1zdHJhdGVneS1vcHRpb24uanMiLCJzb3VyY2VSb290Ijoibmc6Ly9nZS1hZG1pbi1hdXRoLyIsInNvdXJjZXMiOlsibGliL3N0cmF0ZWd5L25hbWUtcGFzc3dvcmQtc3RyYXRlZ3ktb3B0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFDQSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sV0FBVyxDQUFDOzs7O0FBRTlDLGdEQVVDOzs7SUFUQyxnREFBcUI7O0lBQ3JCLDhDQUFrQjs7SUFDbEIsNENBQWdCOztJQUNoQiw4Q0FHRTs7SUFDRixtREFBeUI7O0lBQ3pCLHFEQUEyQjs7Ozs7QUFHN0IsaURBR0M7OztJQUZDLDBDQUFhOztJQUNiLDZDQUFrQjs7Ozs7QUFHcEIsaURBR0M7OztJQUZDLDBDQUFhOztJQUNiLDZDQUFrQjs7QUFHcEIsTUFBTSxPQUFPLCtCQUFnQyxTQUFRLHFCQUFxQjtJQUExRTs7UUFDRSxpQkFBWSxHQUFTLFlBQVksQ0FBQztRQUNsQyxpQkFBWSxHQUEwQztZQUNwRCxRQUFRLEVBQUUsY0FBYztZQUN4QixNQUFNLEVBQUUsS0FBSztTQUNkLENBQUM7UUFDRixVQUFLLEdBQTBDO1lBQzdDLFVBQVUsRUFBRSxLQUFLO1lBQ2pCLFFBQVEsRUFBRSxPQUFPO1lBQ2pCLE1BQU0sRUFBRSxNQUFNO1lBQ2QsUUFBUSxFQUFFO2dCQUNSLE9BQU8sRUFBRSxHQUFHO2dCQUNaLE9BQU8sRUFBRSxJQUFJO2FBQ2Q7WUFDRCxhQUFhLEVBQUUsQ0FBQyxPQUFPLENBQUM7WUFDeEIsZUFBZSxFQUFFLENBQUMsdUNBQXVDLENBQUM7U0FDM0QsQ0FBQztRQUNGLGVBQVUsR0FBMEM7WUFDbEQsUUFBUSxFQUFFLFlBQVk7WUFDdEIsTUFBTSxFQUFFLE1BQU07WUFDZCxhQUFhLEVBQUUsQ0FBQyxPQUFPLENBQUM7U0FDekIsQ0FBQztRQUNG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LCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSwgSHR0cFJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBOYkF1dGhTdHJhdGVneU9wdGlvbnMgfSBmcm9tICdAbmVidWxhci9hdXRoJztcclxuaW1wb3J0IHsgZ2V0RGVlcEZyb21PYmplY3QgfSBmcm9tICcuLi9oZWxwZXInO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBOYW1lUGFzc3dvcmRTdHJhdGVneU1vZHVsZSB7XHJcbiAgYWx3YXlzRmFpbD86IGJvb2xlYW47XHJcbiAgZW5kcG9pbnQ/OiBzdHJpbmc7XHJcbiAgbWV0aG9kPzogc3RyaW5nO1xyXG4gIHJlZGlyZWN0Pzoge1xyXG4gICAgc3VjY2Vzcz86IHN0cmluZyB8IG51bGw7XHJcbiAgICBmYWlsdXJlPzogc3RyaW5nIHwgbnVsbDtcclxuICB9O1xyXG4gIGRlZmF1bHRFcnJvcnM/OiBzdHJpbmdbXTtcclxuICBkZWZhdWx0TWVzc2FnZXM/OiBzdHJpbmdbXTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBOYW1lUGFzc3dvcmRTdHJhdGVneVN1Y2Nlc3Mge1xyXG4gIGtleT86IHN0cmluZztcclxuICBnZXR0ZXI/OiBGdW5jdGlvbjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBOYW1lUGFzc3dvcmRTdHJhdGVneU1lc3NhZ2Uge1xyXG4gIGtleT86IHN0cmluZztcclxuICBnZXR0ZXI/OiBGdW5jdGlvbjtcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIE5hbWVQYXNzd29yZEF1dGhTdHJhdGVneU9wdGlvbnMgZXh0ZW5kcyBOYkF1dGhTdHJhdGVneU9wdGlvbnMge1xyXG4gIGJhc2VFbmRwb2ludD86IGFueSA9ICcvYXBpL2F1dGgvJztcclxuICBnZXRQdWJsaWNLZXk/OiBib29sZWFuIHwgTmFtZVBhc3N3b3JkU3RyYXRlZ3lNb2R1bGUgPSB7XHJcbiAgICBlbmRwb2ludDogJ2dldFB1YmxpY0tleScsXHJcbiAgICBtZXRob2Q6ICdnZXQnXHJcbiAgfTtcclxuICBsb2dpbj86IGJvb2xlYW4gfCBOYW1lUGFzc3dvcmRTdHJhdGVneU1vZHVsZSA9IHtcclxuICAgIGFsd2F5c0ZhaWw6IGZhbHNlLFxyXG4gICAgZW5kcG9pbnQ6ICdsb2dpbicsXHJcbiAgICBtZXRob2Q6ICdwb3N0JyxcclxuICAgIHJlZGlyZWN0OiB7XHJcbiAgICAgIHN1Y2Nlc3M6ICcvJyxcclxuICAgICAgZmFpbHVyZTogbnVsbFxyXG4gICAgfSxcclxuICAgIGRlZmF1bHRFcnJvcnM6IFsn5pyq55+l6ZSZ6K+vISddLFxyXG4gICAgZGVmYXVsdE1lc3NhZ2VzOiBbJ1lvdSBoYXZlIGJlZW4gc3VjY2Vzc2Z1bGx5IGxvZ2dlZCBpbi4nXVxyXG4gIH07XHJcbiAgY3JlYXRlVXNlcj86IGJvb2xlYW4gfCBOYW1lUGFzc3dvcmRTdHJhdGVneU1vZHVsZSA9IHtcclxuICAgIGVuZHBvaW50OiAnY3JlYXRlVXNlcicsXHJcbiAgICBtZXRob2Q6ICdwb3N0JyxcclxuICAgIGRlZmF1bHRFcnJvcnM6IFsn5pyq55+l6ZSZ6K+vISddXHJcbiAgfTtcclxuICB1cGRhdGVQYXNzd29yZEZvckFkbWluPzogYm9vbGVhbiB8IE5hbWVQYXNzd29yZFN0cmF0ZWd5TW9kdWxlID0ge1xyXG4gICAgZW5kcG9pbnQ6ICd1cGRhdGVQYXNzd29yZEZvckFkbWluJyxcclxuICAgIG1ldGhvZDogJ3BhdGNoJyxcclxuICAgIGRlZmF1bHRFcnJvcnM6IFsn5pyq55+l6ZSZ6K+vISddXHJcbiAgfTtcclxuICByZWdpc3Rlcj86IGJvb2xlYW4gfCBOYW1lUGFzc3dvcmRTdHJhdGVneU1vZHVsZSA9IHtcclxuICAgIGFsd2F5c0ZhaWw6IGZhbHNlLFxyXG4gICAgZW5kcG9pbnQ6ICdyZWdpc3RlcicsXHJcbiAgICBtZXRob2Q6ICdwb3N0JyxcclxuICAgIHJlZGlyZWN0OiB7XHJcbiAgICAgIHN1Y2Nlc3M6ICcvJyxcclxuICAgICAgZmFpbHVyZTogbnVsbFxyXG4gICAgfSxcclxuICAgIGRlZmF1bHRFcnJvcnM6IFsnU29tZXRoaW5nIHdlbnQgd3JvbmcsIHBsZWFzZSB0cnkgYWdhaW4uJ10sXHJcbiAgICBkZWZhdWx0TWVzc2FnZXM6IFsnWW91IGhhdmUgYmVlbiBzdWNjZXNzZnVsbHkgcmVnaXN0ZXJlZC4nXVxyXG4gIH07XHJcbiAgcmVxdWVzdFBhc3M/OiBib29sZWFuIHwgTmFtZVBhc3N3b3JkU3RyYXRlZ3lNb2R1bGUgPSB7XHJcbiAgICBlbmRwb2ludDogJ3JlcXVlc3QtcGFzcycsXHJcbiAgICBtZXRob2Q6ICdwb3N0JyxcclxuICAgIHJlZGlyZWN0OiB7XHJcbiAgICAgIHN1Y2Nlc3M6ICcvJyxcclxuICAgICAgZmFpbHVyZTogbnVsbFxyXG4gICAgfSxcclxuICAgIGRlZmF1bHRFcnJvcnM6IFsnU29tZXRoaW5nIHdlbnQgd3JvbmcsIHBsZWFzZSB0cnkgYWdhaW4uJ10sXHJcbiAgICBkZWZhdWx0TWVzc2FnZXM6IFsnUmVzZXQgcGFzc3dvcmQgaW5zdHJ1Y3Rpb25zIGhhdmUgYmVlbiBzZW50IHRvIHlvdXIgZW1haWwuJ11cclxuICB9O1xyXG4gIHJlc2V0UGFzcz86IGJvb2xlYW4gfCBOYW1lUGFzc3dvcmRTdHJhdGVneU1vZHVsZSA9IHtcclxuICAgIGVuZHBvaW50OiAndXBkYXRlVXNlclBhc3N3b3JkJyxcclxuICAgIG1ldGhvZDogJ3BhdGNoJyxcclxuICAgIHJlZGlyZWN0OiB7XHJcbiAgICAgIHN1Y2Nlc3M6ICcvJyxcclxuICAgICAgZmFpbHVyZTogbnVsbFxyXG4gICAgfSxcclxuICAgIGRlZmF1bHRFcnJvcnM6IFsn5pyq55+l6ZSZ6K+vLiddLFxyXG4gICAgZGVmYXVsdE1lc3NhZ2VzOiBbJ1lvdXIgcGFzc3dvcmQgaGFzIGJlZW4gc3VjY2Vzc2Z1bGx5IGNoYW5nZWQuJ11cclxuICB9O1xyXG4gIGxvZ291dD86IGJvb2xlYW4gfCBOYW1lUGFzc3dvcmRTdHJhdGVneU1vZHVsZSA9IHtcclxuICAgIGFsd2F5c0ZhaWw6IGZhbHNlLFxyXG4gICAgZW5kcG9pbnQ6ICdsb2dvdXQnLFxyXG4gICAgbWV0aG9kOiAnZGVsZXRlJyxcclxuICAgIHJlZGlyZWN0OiB7XHJcbiAgICAgIHN1Y2Nlc3M6ICcvJyxcclxuICAgICAgZmFpbHVyZTogbnVsbFxyXG4gICAgfSxcclxuICAgIGRlZmF1bHRFcnJvcnM6IFsnU29tZXRoaW5nIHdlbnQgd3JvbmcsIHBsZWFzZSB0cnkgYWdhaW4uJ10sXHJcbiAgICBkZWZhdWx0TWVzc2FnZXM6IFsnWW91IGhhdmUgYmVlbiBzdWNjZXNzZnVsbHkgbG9nZ2VkIG91dC4nXVxyXG4gIH07XHJcbiAgZXJyb3JzPzogTmFtZVBhc3N3b3JkU3RyYXRlZ3lNZXNzYWdlID0ge1xyXG4gICAga2V5OiAnbWVzc2FnZXInLFxyXG4gICAgZ2V0dGVyOiAobW9kdWxlOiBzdHJpbmcsIHJlczogSHR0cEVycm9yUmVzcG9uc2UsIG9wdGlvbnM6IE5hbWVQYXNzd29yZEF1dGhTdHJhdGVneU9wdGlvbnMpID0+IFtcclxuICAgICAgZ2V0RGVlcEZyb21PYmplY3QocmVzLmVycm9yLCBvcHRpb25zLmVycm9ycy5rZXksIG9wdGlvbnNbbW9kdWxlXS5kZWZhdWx0RXJyb3JzKVxyXG4gICAgXVxyXG4gIH07XHJcbiAgbWVzc2FnZXM/OiBOYW1lUGFzc3dvcmRTdHJhdGVneU1lc3NhZ2UgPSB7XHJcbiAgICBrZXk6ICdtZXNzYWdlcicsXHJcbiAgICBnZXR0ZXI6IChcclxuICAgICAgbW9kdWxlOiBzdHJpbmcsXHJcbiAgICAgIHJlczogSHR0cFJlc3BvbnNlPE9iamVjdD4sXHJcbiAgICAgIG9wdGlvbnM6IE5hbWVQYXNzd29yZEF1dGhTdHJhdGVneU9wdGlvbnNcclxuICAgICkgPT4gW2dldERlZXBGcm9tT2JqZWN0KHJlcy5ib2R5LCBvcHRpb25zLm1lc3NhZ2VzLmtleSwgZmFsc2UpXVxyXG4gIH07XHJcbiAgc3VjY2Vzcz86IE5hbWVQYXNzd29yZFN0cmF0ZWd5U3VjY2VzcyA9IHtcclxuICAgIGtleTogJ3N1Y2Nlc3MnLFxyXG4gICAgZ2V0dGVyOiAobW9kdWxlOiBzdHJpbmcsIHJlczogSHR0cFJlc3BvbnNlPE9iamVjdD4sIG9wdGlvbnM6IE5hbWVQYXNzd29yZEF1dGhTdHJhdGVneU9wdGlvbnMpID0+XHJcbiAgICAgIGdldERlZXBGcm9tT2JqZWN0KHJlcy5ib2R5LCBvcHRpb25zLnN1Y2Nlc3Mua2V5LCBvcHRpb25zW21vZHVsZV0uZGVmYXVsdE1lc3NhZ2VzKVxyXG4gIH07XHJcbiAgdmFsaWRhdGlvbj86IHtcclxuICAgIHBhc3N3b3JkPzoge1xyXG4gICAgICByZXF1aXJlZD86IGJvb2xlYW47XHJcbiAgICAgIG1pbkxlbmd0aD86IG51bWJlciB8IG51bGw7XHJcbiAgICAgIG1heExlbmd0aD86IG51bWJlciB8IG51bGw7XHJcbiAgICAgIHJlZ2V4cD86IHN0cmluZyB8IG51bGw7XHJcbiAgICB9O1xyXG4gICAgdXNlck5hbWU/OiB7XHJcbiAgICAgIHJlcXVpcmVkPzogYm9vbGVhbjtcclxuICAgICAgbWluTGVuZ3RoPzogbnVtYmVyIHwgbnVsbDtcclxuICAgICAgbWF4TGVuZ3RoPzogbnVtYmVyIHwgbnVsbDtcclxuICAgICAgcmVnZXhwPzogc3RyaW5nIHwgbnVsbDtcclxuICAgIH07XHJcbiAgfTtcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IG5hbWVQYXNzd29yZFN0cmF0ZWd5T3B0aW9uczogTmFtZVBhc3N3b3JkQXV0aFN0cmF0ZWd5T3B0aW9ucyA9IG5ldyBOYW1lUGFzc3dvcmRBdXRoU3RyYXRlZ3lPcHRpb25zKCk7XHJcbiJdfQ==