Advertisement
Guest User

Untitled

a guest
Jun 7th, 2017
154
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.02 KB | None | 0 0
  1. var userpool = {
  2. actions: {
  3. getCurrentUser: function getCurrentUser(commit) {
  4.  
  5. return new Promise(function (resolve, reject) {
  6. var cognitoUser = cognitoUserPool.getCurrentUser();
  7.  
  8. if (!cognitoUser) {
  9. reject({
  10. message: "Can't retrieve the current user"
  11. });
  12. return;
  13. }
  14.  
  15. cognitoUser.getSession(function (err, session) {
  16. if (err) {
  17. reject(err);
  18. return;
  19. }
  20. // Call AUTHENTICATE because it's utterly the same
  21. commit('AUTHENTICATE', constructUser(cognitoUser, session));
  22. resolve();
  23. });
  24. });
  25. },
  26. authenticateUser: function authenticateUser(commit, payload) {
  27.  
  28. var authDetails = new _amazonCognitoIdentityJs.AuthenticationDetails({
  29. Username: payload.username,
  30. Password: payload.password
  31. });
  32.  
  33. var cognitoUser = new _amazonCognitoIdentityJs.CognitoUser({
  34. Pool: cognitoUserPool,
  35. Username: payload.username
  36. });
  37.  
  38. return new Promise(function (resolve, reject) {
  39. return cognitoUser.authenticateUser(authDetails, {
  40. onFailure: function onFailure(err) {
  41. reject(err);
  42. },
  43. onSuccess: function onSuccess(session, userConfirmationNecessary) {
  44. commit('AUTHENTICATE', constructUser(cognitoUser, session));
  45. resolve({ userConfirmationNecessary: userConfirmationNecessary });
  46. }
  47. });
  48. });
  49. },
  50. signUp: function signUp(commit, userInfo) {
  51.  
  52. /* userInfo: { username, password, attributes } */
  53. var userAttributes = Object.keys(userInfo.attributes || {}).map(function (key) {
  54. return new _amazonCognitoIdentityJs.CognitoUserAttribute({
  55. Name: key,
  56. Value: userInfo.attributes[key]
  57. });
  58. });
  59.  
  60. return new Promise(function (resolve, reject) {
  61. cognitoUserPool.signUp(userInfo.username, userInfo.password, userAttributes, null, function (err, data) {
  62. if (!err) {
  63. commit('AUTHENTICATE', {
  64. username: data.user.getUsername(),
  65. tokens: null, // no session yet
  66. attributes: {}
  67. });
  68. resolve({ userConfirmationNecessary: !data.userConfirmed });
  69. return;
  70. }
  71. reject(err);
  72. });
  73. });
  74. },
  75. confirmRegistration: function confirmRegistration(state, payload) {
  76.  
  77. var cognitoUser = new _amazonCognitoIdentityJs.CognitoUser({
  78. Pool: cognitoUserPool,
  79. Username: payload.username
  80. });
  81.  
  82. return new Promise(function (resolve, reject) {
  83. cognitoUser.confirmRegistration(payload.code, true, function (err) {
  84. if (!err) {
  85. resolve();
  86. return;
  87. }
  88. reject(err);
  89. });
  90. });
  91. },
  92. resendConfirmationCode: function resendConfirmationCode(commit, payload) {
  93.  
  94. var cognitoUser = new _amazonCognitoIdentityJs.CognitoUser({
  95. Pool: cognitoUserPool,
  96. Username: payload.username
  97. });
  98.  
  99. return new Promise(function (resolve, reject) {
  100. cognitoUser.resendConfirmationCode(function (err) {
  101. if (!err) {
  102. resolve();
  103. return;
  104. }
  105. reject(err);
  106. });
  107. });
  108. },
  109. forgotPassword: function forgotPassword(commit, payload) {
  110.  
  111. var cognitoUser = new _amazonCognitoIdentityJs.CognitoUser({
  112. Pool: cognitoUserPool,
  113. Username: payload.username
  114. });
  115.  
  116. return new Promise(function (resolve, reject) {
  117. return cognitoUser.forgotPassword({
  118. onSuccess: function onSuccess() {
  119. resolve();
  120. },
  121. onFailure: function onFailure(err) {
  122. reject(err);
  123. }
  124. });
  125. });
  126. },
  127. confirmPassword: function confirmPassword(commit, payload) {
  128.  
  129. var cognitoUser = new _amazonCognitoIdentityJs.CognitoUser({
  130. Pool: cognitoUserPool,
  131. Username: payload.username
  132. });
  133.  
  134. return new Promise(function (resolve, reject) {
  135. cognitoUser.confirmPassword(payload.code, payload.newPassword, {
  136. onFailure: function onFailure(err) {
  137. reject(err);
  138. },
  139. onSuccess: function onSuccess() {
  140. resolve();
  141. }
  142. });
  143. });
  144. },
  145.  
  146.  
  147. // Only for authenticated users
  148. changePassword: function changePassword(state, payload) {
  149.  
  150. return new Promise(function (resolve, reject) {
  151. // Make sure the user is authenticated
  152. if (state.user === null || state.user && state.user.tokens === null) {
  153. reject({
  154. message: 'User is unauthenticated'
  155. });
  156. return;
  157. }
  158.  
  159. var cognitoUser = new _amazonCognitoIdentityJs.CognitoUser({
  160. Pool: cognitoUserPool,
  161. Username: state.user.username
  162. });
  163.  
  164. // Restore session without making an additional call to API
  165. cognitoUser.signInUserSession = cognitoUser.getCognitoUserSession(state.user.tokens);
  166.  
  167. cognitoUser.changePassword(payload.oldPassword, payload.newPassword, function (err) {
  168. if (!err) {
  169. resolve();
  170. return;
  171. }
  172. reject(err);
  173. });
  174. });
  175. },
  176.  
  177.  
  178. // Only for authenticated users
  179. updateAttributes: function updateAttributes(context, payload) {
  180. var commit = context.commit,
  181. state = context.state;
  182.  
  183. return new Promise(function (resolve, reject) {
  184. // Make sure the user is authenticated
  185. if (state.user === null || state.user && state.user.tokens === null) {
  186. reject({
  187. message: 'User is unauthenticated'
  188. });
  189. return;
  190. }
  191.  
  192. var cognitoUser = new _amazonCognitoIdentityJs.CognitoUser({
  193. Pool: cognitoUserPool,
  194. Username: state.user.username
  195. });
  196.  
  197. // Restore session without making an additional call to API
  198. cognitoUser.signInUserSession = cognitoUser.getCognitoUserSession(state.user.tokens);
  199.  
  200. var attributes = Object.keys(payload || {}).map(function (key) {
  201. return new _amazonCognitoIdentityJs.CognitoUserAttribute({
  202. Name: key,
  203. Value: payload[key]
  204. });
  205. });
  206.  
  207. cognitoUser.updateAttributes(attributes, function (err) {
  208. if (!err) {
  209. resolve();
  210. return;
  211. }
  212. reject(err);
  213. });
  214. });
  215. },
  216.  
  217.  
  218. // Only for authenticated users
  219. getUserAttributes: function getUserAttributes(context) {
  220. var commit = context.commit,
  221. state = context.state;
  222.  
  223. return new Promise(function (resolve, reject) {
  224. // Make sure the user is authenticated
  225. if (state.user === null || state.user && state.user.tokens === null) {
  226. reject({
  227. message: 'User is unauthenticated'
  228. });
  229. return;
  230. }
  231.  
  232. var cognitoUser = new _amazonCognitoIdentityJs.CognitoUser({
  233. Pool: cognitoUserPool,
  234. Username: state.user.username
  235. });
  236.  
  237. // Restore session without making an additional call to API
  238. cognitoUser.signInUserSession = cognitoUser.getCognitoUserSession(state.user.tokens);
  239.  
  240. cognitoUser.getUserAttributes(function (err, attributes) {
  241. if (err) {
  242. reject(err);
  243. return;
  244. }
  245.  
  246. var attributesMap = (attributes || []).reduce(function (accum, item) {
  247. accum[item.Name] = item.Value;
  248. return accum;
  249. }, {});
  250.  
  251. commit('ATTRIBUTES', attributesMap);
  252. resolve(attributesMap);
  253. });
  254. });
  255. },
  256.  
  257.  
  258. // Only for authenticated users
  259. signOut: function signOut(context) {
  260. var commit = context.commit,
  261. state = context.state;
  262.  
  263. return new Promise(function (resolve, reject) {
  264. // Make sure the user is authenticated
  265. if (state.user === null || state.user && state.user.tokens === null) {
  266. reject({
  267. message: 'User is unauthenticated'
  268. });
  269. return;
  270. }
  271.  
  272. var cognitoUser = new _amazonCognitoIdentityJs.CognitoUser({
  273. Pool: cognitoUserPool,
  274. Username: state.user.username
  275. });
  276.  
  277. cognitoUser.signOut();
  278. commit('SIGNOUT');
  279. resolve();
  280. });
  281. }
  282. },
  283. mutations: {
  284. ATTRIBUTES: function(state, attributesMap) {
  285. state.user.attributes = attributesMap;
  286. },
  287. SIGNOUT: function(state) {
  288. state.user = null;
  289. },
  290. AUTHENTICATE: function(state, user) {
  291. state.user = user;
  292. }
  293. }
  294. }
  295.  
  296. function constructUser(cognitoUser, session) {
  297. return {
  298. username: cognitoUser.getUsername(),
  299. tokens: {
  300. IdToken: session.getIdToken().getJwtToken(),
  301. AccessToken: session.getAccessToken().getJwtToken(),
  302. RefreshToken: session.getRefreshToken().getToken()
  303. },
  304. attributes: {}
  305. };
  306. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement