Advertisement
Guest User

Untitled

a guest
Jun 19th, 2016
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.49 KB | None | 0 0
  1. import AWS from 'aws-sdk'
  2. import fs from 'fs'
  3. import path from 'path'
  4. import ini from 'iniparser'
  5. import util from 'util'
  6. import Promise from 'bluebird'
  7. import CryptoJS from 'crypto-js'
  8. import {Internet, Name, Address} from 'faker'
  9. let credPath = path.join(process.env.HOME, '.aws/credentials')
  10. var cred = ini.parseSync(credPath)['rfg.david.middleton']
  11.  
  12.  
  13. const dump = (v) => { console.log(util.inspect(v, {colors:true, depth:10})) }
  14.  
  15. AWS.config.update({
  16. accessKeyId: cred.aws_access_key_id,
  17. secretAccessKey: cred.aws_secret_access_key,
  18. region: 'us-east-1'
  19. })
  20.  
  21.  
  22. let CognitoIdentityServiceProvider = new AWS.CognitoIdentityServiceProvider()
  23. Promise.promisifyAll(CognitoIdentityServiceProvider, CognitoIdentityServiceProvider)
  24.  
  25. let CognitoIdentity = new AWS.CognitoIdentity()
  26. Promise.promisifyAll(CognitoIdentity, CognitoIdentity)
  27.  
  28.  
  29.  
  30. const describePools = async (params={MaxResults: 60}) => {
  31. let pools = await listUserPools({MaxResults: 60})
  32.  
  33. dump(pools)
  34. let desc = await Promise.all(Promise.map(pools.UserPools,({Id}) => {
  35. return describeUserPool({UserPoolId: Id})
  36. }))
  37.  
  38. dump(desc)
  39. return desc
  40. }
  41.  
  42. const destroyPools = async (params={MaxResults: 60}) => {
  43. let pools = await listUserPools({MaxResults: 60})
  44.  
  45. let desc = await Promise.all(Promise.map(pools.UserPools,({UserPoolId}) => {
  46. return deleteUserPool({UserPoolId})
  47. }))
  48.  
  49. dump(desc)
  50. return desc
  51. }
  52.  
  53. const astr = (n) => {
  54. return {
  55. Name: n,
  56. AttributeDataType: 'String',
  57. DeveloperOnlyAttribute: false,
  58. Mutable: true,
  59. Required: true,
  60. StringAttributeConstraints: { MinLength: '0', MaxLength: '1024' }
  61. }
  62. }
  63.  
  64. const createUserPool = async (params={}) => {
  65. console.log('createUserPool')
  66.  
  67. let uParams = {
  68. PoolName: 'RANDOM_ORG_NAME', //URL PREFIX
  69. MfaConfiguration: 'ON',
  70. Policies: {
  71. PasswordPolicy: {
  72. MinimumLength : 8,
  73. RequireUppercase : true,
  74. RequireLowercase : true,
  75. RequireNumbers : true,
  76. RequireSymbols : true
  77. }
  78. },
  79.  
  80. SchemaAttributes: [
  81. 'name','address','email', 'locale',
  82. 'zoneinfo', 'phone_number'
  83. ].map(astr),
  84.  
  85. ...params
  86. };
  87.  
  88. dump(uParams)
  89. let pool = await _createUserPool(uParams);
  90.  
  91. dump(pool)
  92.  
  93. return pool
  94. }
  95.  
  96. const createUserPoolClient = async (params={}) => {
  97. let uParams = {
  98. ClientName: "RomansApp",
  99. UserPoolId: "us-east-1_wFOFq1wEh",
  100. GenerateSecret: false
  101. }
  102.  
  103. let client = await _createUserPoolClient(uParams)
  104. dump(client)
  105.  
  106. return client
  107. }
  108.  
  109. const createUser = async (params = {}) => {
  110. console.log('createUser')
  111.  
  112. const hmac_sha_256 = CryptoJS.HmacSHA256(params.Username + params.ClientId, params.ClientSecret)
  113. const base_64 = CryptoJS.enc.Base64.stringify(hmac_sha_256)
  114.  
  115. const uParams = {
  116. ClientId: params.ClientId,
  117. Username: params.Username,
  118. Password: params.Password,
  119. UserAttributes: [
  120. { Name: "address", Value: params.Address },
  121. { Name: "email", Value: params.Email },
  122. { Name: "locale", Value: params.Locale },
  123. { Name: "name", Value: params.Name },
  124. { Name: "phone_number", Value: params.PhoneNumber }
  125. ],
  126. SecretHash: base_64
  127. }
  128.  
  129. dump(uParams)
  130. let user = await CognitoIdentityServiceProvider.signUpAsync(uParams);
  131.  
  132. dump(user)
  133. return user
  134. }
  135.  
  136. const getId = async(params = {}) => {
  137. const uParams = {
  138. IdentityPoolId: 'us-east-1:fe28d5d0-da0b-413e-b42e-71de7ab1428d',
  139. AccountId: '046922594573',
  140. Logins: {
  141. "cognito-idp.us-east-1.amazonaws.com/us-east-1_wFOFq1wEh": "[TOKEN]"
  142. },
  143. ...params
  144. }
  145. const id = await CognitoIdentity.getIdAsync(uParams);
  146.  
  147. console.log(util.inspect({id},{depth:10}));
  148. return id
  149. }
  150.  
  151.  
  152.  
  153. const login = async (params={}) => {
  154. var authenticationData = {
  155. Username : 'Barry',
  156. Password : 'Testtest99*',
  157. }
  158.  
  159. var authenticationDetails = new
  160. lCognitoIdentityServiceProvider.AuthenticationDetails(authenticationData)
  161. var poolData = {
  162. UserPoolId : 'us-east-1_wFOFq1wEh',
  163. ClientId : '60vqo0jmmobi2599sva58faehb'
  164. }
  165. var userPool = new CognitoIdentityServiceProvider.CognitoUserPool(poolData)
  166. var userData = {
  167. Username : 'username',
  168. Pool : userPool
  169. }
  170.  
  171. console.log(util.inspect({authenticationData,poolData,userData},{depth:10}))
  172.  
  173. var cognitoUser = new CognitoIdentityServiceProvider.CognitoUser(userData)
  174. console.log(util.inspect({cognitoUser},{depth:10}))
  175.  
  176. return new Promise((resolve,reject) => {
  177. cognitoUser.authenticateUser(authenticationDetails, { onSucess: resolve, onFailure: reject })
  178. })
  179. }
  180.  
  181. /*
  182.  
  183. UserPoolClient =
  184. { UserPoolClient:
  185. { UserPoolId: 'us-east-1_wFOFq1wEh',
  186. ClientName: 'RomansApp',
  187. ClientId: '60vqo0jmmobi2599sva58faehb',
  188. ClientSecret: '1jsf6oh55bmdg9g9hrfiu2kjajk9422maiouqh0kpf8coih9if53',
  189. LastModifiedDate: 2016-06-14T03:34:02.029Z,
  190. CreationDate: 2016-06-14T03:34:02.029Z } }
  191.  
  192. */
  193.  
  194.  
  195. createUser({
  196. ClientId: 'n08mklup8mqp7dbdsf740irjp',
  197. ClientSecret: '1b56bu7j93hp9irndcm6i2kp7hu21afc0br2sv3pifnvgldefa04',
  198. Username: "peon375",
  199. Password: "Rubber69*!",
  200. Name: "Sit Fuglar",
  201. Address: "adsfasdf",
  202. Email: "foo@bar.com",
  203. PhoneNumber: "+61456006430",
  204. Locale: "EN"
  205. }).then((data)=>{
  206. console.log(data)
  207. })
  208. .catch((err)=>{
  209. dump(err)
  210. console.log("Bad")
  211. })
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement