react-native-keychain
Advanced tools
Comparing version 0.1.1 to 0.2.0
@@ -8,10 +8,9 @@ /** | ||
var KeychainAccessibilityEnum = module.exports = { | ||
NTLM: true, | ||
MSN: true, | ||
DPA: true, | ||
RPA: true, | ||
HTTPBasic: true, | ||
HTTPDigest: true, | ||
HTMLForm: true, | ||
Default: true, | ||
whenUnlocked: true, | ||
afterFirstUnlock: true, | ||
always: true, | ||
whenPasscodeSetThisDeviceOnly: true, | ||
whenUnlockedThisDeviceOnly: true, | ||
afterFirstUnlockThisDeviceOnly: true, | ||
alwaysThisDeviceOnly: true, | ||
}; |
@@ -59,3 +59,4 @@ /** | ||
/** | ||
* Deletes all keychain entries for `server` and calls `callback` with an `Error` if there is any. | ||
* Deletes all internet password keychain entries for `server` and calls `callback` with an | ||
* `Error` if there is any. | ||
* Returns a `Promise` object. | ||
@@ -79,2 +80,72 @@ */ | ||
/** | ||
* Saves the `username` and `password` combination for `service` (defaults to `bundleId`) | ||
* and calls `callback` with an `Error` if there is any. | ||
* Returns a `Promise` object. | ||
*/ | ||
setGenericPassword: function( | ||
username: string, | ||
password: string, | ||
service?: string, | ||
callback?: ?(error: ?Error) => void | ||
): Promise { | ||
return new Promise((resolve, reject) => { | ||
RNKeychainManager.setGenericPasswordForService(service, username, password, function(err) { | ||
callback && callback((err && convertError(err)) || null); | ||
if (err) { | ||
reject(convertError(err)); | ||
} else { | ||
resolve(); | ||
} | ||
}); | ||
}); | ||
}, | ||
/** | ||
* Fetches login combination for `service` (defaults to `bundleId`) 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. | ||
*/ | ||
getGenericPassword: function( | ||
service?: string, | ||
callback?: ?(error: ?Error, result: ?string) => void | ||
): Promise { | ||
return new Promise((resolve, reject) => { | ||
RNKeychainManager.getGenericPasswordForService(service, function(err, username, password) { | ||
err = convertError(err); | ||
if(!err && arguments.length === 1) { | ||
err = new Error('No keychain entry found' + (service ? ' for service "' + service + '"' : '')); | ||
} | ||
callback && callback((err && convertError(err)) || null, username, password); | ||
if (err) { | ||
reject(convertError(err)); | ||
} else { | ||
resolve({ username, password }); | ||
} | ||
}); | ||
}); | ||
}, | ||
/** | ||
* Deletes all generic password keychain entries for `service` (defaults to `bundleId`) and calls | ||
* `callback` with an `Error` if there is any. | ||
* Returns a `Promise` object. | ||
*/ | ||
resetGenericPassword: function( | ||
service?: string, | ||
callback?: ?(error: ?Error) => void | ||
): Promise { | ||
return new Promise((resolve, reject) => { | ||
RNKeychainManager.resetGenericPasswordForService(service, function(err) { | ||
callback && callback((err && convertError(err)) || null); | ||
if (err) { | ||
reject(convertError(err)); | ||
} else { | ||
resolve(); | ||
} | ||
}); | ||
}); | ||
}, | ||
}; | ||
@@ -81,0 +152,0 @@ |
@@ -22,3 +22,2 @@ /** | ||
return { | ||
server: 'http://localhost/', | ||
username: '', | ||
@@ -32,9 +31,9 @@ password: '', | ||
Keychain | ||
.setInternetCredentials(this.state.server, this.state.username, this.state.password) | ||
.then(function() { | ||
.setGenericPassword(this.state.username, this.state.password) | ||
.then(() => { | ||
this.setState({status: 'Credentials saved!'}); | ||
}.bind(this)) | ||
.catch(function(err) { | ||
}) | ||
.catch((err) => { | ||
this.setState({status: 'Could not save credentials, ' + err}); | ||
}.bind(this)); | ||
}); | ||
}, | ||
@@ -44,10 +43,10 @@ | ||
Keychain | ||
.getInternetCredentials(this.state.server) | ||
.then(function(credentials) { | ||
.getGenericPassword() | ||
.then((credentials) => { | ||
this.setState(credentials); | ||
this.setState({status: 'Credentials loaded!'}); | ||
}.bind(this)) | ||
.catch(function(err) { | ||
}) | ||
.catch((err) => { | ||
this.setState({status: 'Could not load credentials. ' + err}); | ||
}.bind(this)); | ||
}); | ||
}, | ||
@@ -57,9 +56,9 @@ | ||
Keychain | ||
.resetInternetCredentials(this.state.server) | ||
.then(function() { | ||
.resetGenericPassword() | ||
.then(() => { | ||
this.setState({status: 'Credentials Reset!', username: '', password: '' }); | ||
}.bind(this)) | ||
.catch(function(err) { | ||
this.setState({status: 'Could not save credentials, ' + err}); | ||
}.bind(this)); | ||
}) | ||
.catch((err) => { | ||
this.setState({status: 'Could not reset credentials, ' + err}); | ||
}); | ||
}, | ||
@@ -74,12 +73,2 @@ | ||
<View style={styles.field}> | ||
<Text style={styles.label}>Server</Text> | ||
<TextInput | ||
style={styles.input} | ||
keyboardType="url" | ||
autoCapitalize="none" | ||
value={this.state.server} | ||
onChange={(event) => this.setState({ server: event.nativeEvent.text })} | ||
/> | ||
</View> | ||
<View style={styles.field}> | ||
<Text style={styles.label}>Username</Text> | ||
@@ -130,5 +119,5 @@ <TextInput | ||
flex: 1, | ||
justifyContent: 'center', | ||
alignItems: 'center', | ||
backgroundColor: '#F5FCFF', | ||
paddingTop: 30, | ||
}, | ||
@@ -135,0 +124,0 @@ welcome: { |
{ | ||
"name": "react-native-keychain", | ||
"version": "0.1.1", | ||
"version": "0.2.0", | ||
"description": "Keychain Access for React Native", | ||
@@ -5,0 +5,0 @@ "main": "index.ios.js", |
# react-native-keychain | ||
Keychain Access for React Native | ||
Currently functionality is limited to just storing internet passwords. More to come... | ||
Currently functionality is limited to just storing internet and generic passwords. Wider exposure of the underlying API coming. | ||
@@ -20,9 +20,30 @@ ## Installation | ||
var server = 'http://facebook.com'; | ||
var username = 'zuck'; | ||
var password = 'poniesRgr8'; | ||
// Generic Password, service argument optional | ||
Keychain | ||
.setGenericPassword(username, password) | ||
.then(function() { | ||
console.log('Credentials saved successfully!'); | ||
}); | ||
Keychain | ||
.getGenericPassword() | ||
.then(function(credentials) { | ||
console.log('Credentials successfully loaded for user ' + credentials.username); | ||
}); | ||
Keychain | ||
.resetGenericPassword() | ||
.then(function() { | ||
console.log('Credentials successfully deleted'); | ||
}); | ||
// Internet Password, server argument required | ||
var server = 'http://facebook.com'; | ||
Keychain | ||
.setInternetCredentials(server, username, password) | ||
.then(function() { | ||
console.log('Credentials saved successfully!') | ||
console.log('Credentials saved successfully!'); | ||
}); | ||
@@ -33,3 +54,3 @@ | ||
.then(function(credentials) { | ||
console.log('Credentials successfully loaded', credentials) | ||
console.log('Credentials successfully loaded for user ' + credentials.username); | ||
}); | ||
@@ -39,4 +60,4 @@ | ||
.resetInternetCredentials(server) | ||
.then(function(credentials) { | ||
console.log('Credentials successfully deleted') | ||
.then(function() { | ||
console.log('Credentials successfully deleted'); | ||
}); | ||
@@ -43,0 +64,0 @@ |
Sorry, the diff of this file is not supported yet
84858
458
66