waa

WAAccountStore

A universal and extensible account system

Showing:

Popularity

Downloads/wk

0

GitHub Stars

53

Maintenance

Last Commit

6yrs ago

Contributors

3

Package

Dependencies

2

License

MIT

Categories

Readme

WAAccountStore

Build Status CocoaPods Platform CocoaPods Version CocoaPods License

WAAccountStore is a simple yet extensible account system.

It encapsulates the basic account management functions, the security storage of the account credential. And allows you to store any useful information you want with a account.

##Infrastructure

WAAccount represents a user account. It contains a WAAccountCredential for storing account credential info and a user info object for storing additional info.

WAAccountCredential provides a secure way of storing account credentials. It has a securityStorage property. Anything in the securityStorage will be stored safely in the keychain.

WAAccountStore provides a set of account management functions, such as add account, remove account, update account, etc. As well as notifications for account change (WAAccountStoreCurrentAccountDidChangeNotification, WAAccountStoreCurrentAccountUpdatedNotification)

##Usage

Use the default store throughout your app.


WAAccountStore.defaultStore()

You may start using WAAccountStore directly. However creating some simple extensions for WAAccountCredential and WAAccount will make your life easier.

For example:

Associate your user model with WAAccount.

//Assuming `User` is your user model class.
extension WAAccount {
    var user: User {
        get {
            return self.userInfo as! User
        }
    }
    
    convenience init(identifier: String, credential: WAAccountCredential, user: User) {
        self.init(identifier: identifier, credential: credential, userInfo: user)
    }
}

Direct access to securityStorage of WAAccountCredential is inconvenient. Create a extension for convenient access.


let UserAccessTokenStorageKey = "AccessToken"

extension WAAccountCredential {
    var accessToken: String {
        get {
            return self.securityStorage[UserAccessTokenStorageKey] as! String
        }
    }
    
    convenience init(identifier: String, accessToken: String) {
        self.init(identifier: identifier, securityStorage: [UserAccessTokenStorageKey: accessToken])
    }
}

##Demo

There's a simple demo project in WAAccountStoreDemo folder. A pod install is required to open and build WAAccountStoreDemo.xcworkspace

##Install

Either clone the repo and manually add the files in WAAccountStore directory

or if you use CocoaPods, add the following to your Podfile

pod 'WAAccountStore'

##Note

WAAccountStore makes use of WAKeyValuePersistenceStore and UICKeyChainStore

##Requirements

  • Automatic Reference Counting (ARC)
  • iOS 7.0+
  • Xcode 6.3+

Rate & Review

Great Documentation0
Easy to Use0
Performant0
Highly Customizable0
Bleeding Edge0
Responsive Maintainers0
Poor Documentation0
Hard to Use0
Slow0
Buggy0
Abandoned0
Unwelcoming Community0
100