forked from oblador/react-native-keychain
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
4 changed files
with
197 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
# http://editorconfig.org | ||
root = true | ||
|
||
[*] | ||
indent_style = space | ||
indent_size = 2 | ||
end_of_line = lf | ||
charset = utf-8 | ||
trim_trailing_whitespace = true | ||
insert_final_newline = true | ||
|
||
[*.md] | ||
trim_trailing_whitespace = false |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,42 @@ | ||
# react-native-keychain | ||
Keychain Access for React Native | ||
|
||
Currently functionality is limited to just storing internet passwords. More to come... | ||
|
||
## Installation | ||
|
||
* `$ npm install react-native-keychain` | ||
* Right click on Libraries, select **Add files to "…"** and select `node_modules/react-native-keychain/RNKeychain.xcodeproj` | ||
* Select your project and under **Build Phases** -> **Link Binary With Libraries**, press the + and select `libRNKeychain.a`. | ||
|
||
|
||
## Usage | ||
|
||
```js | ||
var Keychain = require('Keychain'); | ||
|
||
var server = 'http://facebook.com'; | ||
var username = 'zuck'; | ||
var password = 'poniesRgr8'; | ||
Keychain | ||
.setInternetCredentials(server, username, password) | ||
.then(function() { | ||
console.log('Credentials saved successfully!') | ||
}); | ||
|
||
Keychain | ||
.getInternetCredentials(server) | ||
.then(function(credentials) { | ||
console.log('Credentials successfully loaded', credentials) | ||
}); | ||
|
||
Keychain | ||
.resetInternetCredentials(server) | ||
.then(function(credentials) { | ||
console.log('Credentials successfully deleted') | ||
}); | ||
|
||
``` | ||
|
||
## License | ||
MIT © Joel Arvidsson 2015 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,12 +1,89 @@ | ||
/** | ||
* @providesModule KeychainIOS | ||
* @providesModule Keychain | ||
*/ | ||
'use strict'; | ||
|
||
var RNKeychainManager = require('NativeModules').RNKeychainManager; | ||
var NativeModules = require('NativeModules'); | ||
var RNKeychainManager = NativeModules.RNKeychainManager; | ||
|
||
var Keychain = { | ||
/** | ||
* Saves the `username` and `password` combination for `server` | ||
* and calls `callback` with an `Error` if there is any. | ||
* Returns a `Promise` object. | ||
*/ | ||
setInternetCredentials: function( | ||
server: string, | ||
username: string, | ||
password: string, | ||
callback?: ?(error: ?Error) => void | ||
): Promise { | ||
return new Promise((resolve, reject) => { | ||
RNKeychainManager.setInternetCredentialsForServer(server, username, password, function(err) { | ||
callback && callback((err && convertError(err)) || null); | ||
if (err) { | ||
reject(convertError(err)); | ||
} else { | ||
resolve(); | ||
} | ||
}); | ||
}); | ||
}, | ||
|
||
/** | ||
* Fetches login combination for `server` as an object with the format `{ username, password }` | ||
* and passes the result to `callback`, along with an `Error` if there is any. | ||
* Returns a `Promise` object. | ||
*/ | ||
getInternetCredentials: function( | ||
server: string, | ||
callback?: ?(error: ?Error, result: ?string) => void | ||
): Promise { | ||
return new Promise((resolve, reject) => { | ||
RNKeychainManager.getInternetCredentialsForServer(server, function(err, username, password) { | ||
err = convertError(err); | ||
if(!err && arguments.length === 1) { | ||
err = new Error('No keychain entry found for server "' + server + '"'); | ||
} | ||
callback && callback((err && convertError(err)) || null, username, password); | ||
if (err) { | ||
reject(convertError(err)); | ||
} else { | ||
resolve({ username, password }); | ||
} | ||
}); | ||
}); | ||
}, | ||
|
||
/** | ||
* Deletes all keychain entries for `server` and calls `callback` with an `Error` if there is any. | ||
* Returns a `Promise` object. | ||
*/ | ||
resetInternetCredentials: function( | ||
server: string, | ||
callback?: ?(error: ?Error) => void | ||
): Promise { | ||
return new Promise((resolve, reject) => { | ||
RNKeychainManager.resetInternetCredentialsForServer(server, function(err) { | ||
callback && callback((err && convertError(err)) || null); | ||
if (err) { | ||
reject(convertError(err)); | ||
} else { | ||
resolve(); | ||
} | ||
}); | ||
}); | ||
}, | ||
|
||
}; | ||
|
||
function convertError(err) { | ||
if (!err) { | ||
return null; | ||
} | ||
var out = new Error(err.message); | ||
out.key = err.key; | ||
return out; | ||
} | ||
|
||
module.exports = Keychain; |