Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- func login(usernameText : String, passwordText : String){
- user = self.pool!.getUser(usernameText)
- var userString = ""
- print("Login Current thread (Thread.current)")
- user?.getSession(usernameText, password: passwordText, validationData: nil).continue({ task in
- DispatchQueue.main.async {
- print(" Session Current thread (Thread.current)")
- if let err = task.error { // some sort of error
- print("LOGIN FAILED")
- print(err)
- self.userConfirmed = false
- //print(err.userInfo["message"] as! String)
- }
- else { //Successful login!
- // this gets our token from the User Pool
- let ret = task.result! as AWSCognitoIdentityUserSession
- let myToken = ret.idToken?.tokenString;
- let customcedentialProvider = AWSCustomIdentityProvider(tokens: [AWSCustomIdentityProvider.CognitoTokenKey : myToken!])
- let credentialsProvider = AWSCognitoCredentialsProvider(regionType: CognitoConstants.COGNITO_REGIONTYPE, identityPoolId: CognitoConstants.COGNITO_IDENTITY_POOL_ID, identityProviderManager: customcedentialProvider)
- let configuration = AWSServiceConfiguration(region: CognitoConstants.COGNITO_REGIONTYPE, credentialsProvider:credentialsProvider)
- AWSServiceManager.default().defaultServiceConfiguration = configuration
- // wipe cached creds
- credentialsProvider.clearKeychain()
- credentialsProvider.clearCredentials()
- // hit it
- credentialsProvider.getIdentityId().continue({ (task: AWSTask!) -> AnyObject! in
- DispatchQueue.main.async {
- print("Current thread (Thread.current)")
- if (task.error != nil) {
- print("Error: ")
- } else {
- print(credentialsProvider.identityId!)
- // the task result will contain the identity id
- let credentialsProviderUser = AWSCognitoCredentialsProvider(regionType:.usEast1,identityPoolId:credentialsProvider.identityId!)
- let configurationUser = AWSServiceConfiguration(region:.usEast1, credentialsProvider:credentialsProviderUser)
- AWSServiceManager.default().defaultServiceConfiguration = configurationUser
- // Initialize the Cognito Sync client
- let syncClient = AWSCognito.default()
- // Get User Dataset
- let dataset = syncClient?.openOrCreateDataset("myDataset")
- print(dataset?.size() as Any)
- let userData = dataset?.getAll()
- for (key,value) in userData!{ if "(value)".characters.count > 0 {userString.append("| Key: (key) Value: (value) ");print("| Key: (key) Value: (value) ")}
- }
- }
- let defaults = UserDefaults.standard
- defaults.setValue(userString, forKey: defaultsKeys.keyOne)
- defaults.setValue(passwordText, forKey: defaultsKeys.keyTwo)
- defaults.synchronize()
- }
- return nil
- })
- }}
- return nil
- })
- }
- // Class for custom tokens
- class AWSCustomIdentityProvider: NSObject, AWSIdentityProviderManager
- {
- static let FacebookTokenKey = "graph.facebook.com"
- static let GoogleTokenKey = "accounts.google.com"
- static let TwitterTokenKey = "api.twitter.com"
- static let CognitoTokenKey = "cognito-idp.us-east-1.amazonaws.com/us-east-1_XXXXXXXXX"
- var tokens: NSDictionary = [String : String]() as NSDictionary
- init(tokens: [String : String]) {
- self.tokens = tokens as NSDictionary
- }
- func logins() -> AWSTask<NSDictionary> { // AWSIdentityProviderManager delegate method
- return AWSTask(result: tokens)
- }
- }
- static let shared = AWSSyncService()
- private init() {
- }
- let syncClient = AWSCognito(forKey: CognitoConstants.cognitoSyncClientRegistrationKey)
- func saveUnits(lengthUnit: LengthUnit) {
- let unitsDataSet = syncClient.openOrCreateDataset("usersUnit")
- unitsDataSet.synchronize()
- syncClient.listDatasets()
- unitsDataSet.setValue(lengthUnit.rawValue, forKey:"abc")
- unitsDataSet.synchronize()
- }
Add Comment
Please, Sign In to add comment