Capability to store username for further usage

This commit is contained in:
Max Risuhin 2018-06-30 12:21:52 +03:00
parent 6b6dc512d2
commit 878d5491d2
No known key found for this signature in database
GPG Key ID: BF733F5ACA0B4448
3 changed files with 31 additions and 4 deletions

View File

@ -34,6 +34,7 @@ struct RegisterQMLMetaType {
class RNKeychainManagerPrivate {
public:
Bridge* bridge = nullptr;
QString username;
};
RNKeychainManager::RNKeychainManager(QObject* parent) : QObject(parent), d_ptr(new RNKeychainManagerPrivate) {}
@ -65,6 +66,7 @@ void RNKeychainManager::getGenericPasswordForOptions(QVariantList options,
ReadPasswordJob rjob( keychainJobName );
rjob.setAutoDelete( false );
rjob.setKey( d->username );
QEventLoop loop;
rjob.connect( &rjob, SIGNAL(finished(QKeychain::Job*)), &loop, SLOT(quit()) );
rjob.start();
@ -88,6 +90,8 @@ void RNKeychainManager::setGenericPasswordForOptions(QVariantList options,
Q_D(RNKeychainManager);
qDebug()<<"invoked RNKeychainManager::setGenericPasswordForOptions";
d->username = username;
WritePasswordJob wjob( keychainJobName);
wjob.setAutoDelete( false );
wjob.setKey( username );
@ -111,6 +115,8 @@ void RNKeychainManager::resetGenericPasswordForOptions(QVariantList options,
Q_D(RNKeychainManager);
qDebug()<<"invoked RNKeychainManager::resetGenericPasswordForOptions";
d->username = "";
DeletePasswordJob wjob( keychainJobName);
wjob.setAutoDelete( false );
QEventLoop loop;
@ -126,6 +132,14 @@ void RNKeychainManager::resetGenericPasswordForOptions(QVariantList options,
resolve(d->bridge, QVariantList{});
}
void RNKeychainManager::setUsername(const QString &username,
const ModuleInterface::ListArgumentBlock &resolve,
const ModuleInterface::ListArgumentBlock &reject) {
Q_D(RNKeychainManager);
qDebug()<<"invoked RNKeychainManager::setUsername with username = " << username;
d->username = username;
resolve(d->bridge, QVariantList{QVariant(true)});
}

View File

@ -44,12 +44,12 @@ public:
Q_INVOKABLE REACT_PROMISE void resetGenericPasswordForOptions(QVariantList options,
const ModuleInterface::ListArgumentBlock& resolve,
const ModuleInterface::ListArgumentBlock& reject);
Q_INVOKABLE REACT_PROMISE void setUsername(const QString& username,
const ModuleInterface::ListArgumentBlock& resolve,
const ModuleInterface::ListArgumentBlock& reject);
private:
QScopedPointer<RNKeychainManagerPrivate> d_ptr;
bool copyRecursively(const QString& src, const QString& dst);
bool removeRecursively(const QString& path);
};
#endif // RNKEYCHAINMANAGER_H

View File

@ -164,6 +164,19 @@ export function setGenericPassword(
);
}
/**
* Saves the `username` for further use on get requests.
* @param {string} username Associated username or e-mail to be saved.
* @return {Promise} Resolves to `true` when successful
*/
export function setUsername(
username: string
): Promise {
return RNKeychainManager.setUsername(
username
);
}
/**
* Fetches login combination for `service`.
* @param {string|object} serviceOrOptions Reverse domain name qualifier for the service, defaults to `bundleId` or an options object.