• Stars
    star
    108
  • Rank 311,420 (Top 7 %)
  • Language
    TypeScript
  • License
    MIT License
  • Created over 7 years ago
  • Updated about 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

πŸ” NativeScript plugin for secure local storage of fi. passwords

NativeScript Secure Storage plugin

NPM version Twitter Follow

Installation

From the command prompt go to your app's root folder and execute:

NativeScript 7 and later

tns plugin add @nativescript/secure-storage

Before NativeScript 7

tns plugin add nativescript-secure-storage

Demo app

Want to dive in quickly? Check out the demo! Otherwise, continue reading.

You can run the demo app from the root of the project by typing npm run demo.ios.device.

PRO TIP: Want to store objects instead of strings? Use JSON.stringify with set and JSON.parse with get.

API

set | setSync

"In order to GET something you first need to SET it."

-- Eddy Verbruggen

JavaScript
// require the plugin
var SecureStorage = require("nativescript-secure-storage").SecureStorage;

// instantiate the plugin
var secureStorage = new SecureStorage();

// async
secureStorage.set({
  key: "foo",
  value: "I was set at " + new Date()
}).then(
  function(success) {
    console.log("Successfully set a value? " + success);
  }
);

// sync
var success = secureStorage.setSync({
  key: "foo",
  value: "I was set at " + new Date()
});
TypeScript
// require the plugin
import { SecureStorage } from "nativescript-secure-storage";

// instantiate the plugin
let secureStorage = new SecureStorage();

// async
secureStorage.set({
  key: "foo",
  value: "I was set at " + new Date()
}).then(success => console.log("Successfully set a value? " + success));

// sync
const success = secureStorage.setSync({
  key: "foo",
  value: "I was set at " + new Date()
});

get | getSync

Will return null if not found.

JavaScript
// async
secureStorage.get({
  key: "foo"
}).then(
  function(value) {
    console.log("Got value: " + value);
  }
);

// sync
var value = secureStorage.getSync({
  key: "foo"
});
TypeScript
// async
secureStorage.get({
  key: "foo"
}).then(value => console.log("Got value: " + value));

// sync
const value = secureStorage.getSync({
  key: "foo"
});

remove | removeSync

JavaScript
// async
secureStorage.remove({
  key: "foo"
}).then(
  function(success) {
    console.log("Removed value? " + success);
  }
);

// sync
var success = secureStorage.removeSync({
  key: "foo"
});
TypeScript
// async
secureStorage.remove({
  key: "foo"
}).then(success => console.log("Successfully removed a value? " + success));

// sync
const success = secureStorage.removeSync({
  key: "foo"
});

removeAll | removeAllSync

JavaScript
// async
secureStorage.removeAll().then(
  function(success) {
    console.log("Removed value? " + success);
  }
);

// sync
var success = secureStorage.removeAllSync();
TypeScript
// async
secureStorage.removeAll().then(success => console.log("Successfully removed a value? " + success));

// sync
const success = secureStorage.removeAllSync();

clearAllOnFirstRun | clearAllOnFirstRunSync

These functions can be used if you want to clear data when your app is reinstalled.

This is only really useful on iOS because if you write something (through this plugin) to the Keychain, this data won't be removed when the app is uninstalled. So the next time the same app is installed, it will find the data in the keychain.

So if you want to clear 'lingering' data from a previous install, make sure you run one of these methods before using other methods this plugin provides.

JavaScript
// async
secureStorage.clearAllOnFirstRun().then(
  function(success) {
      console.log(success ? "Successfully removed all data on the first run" : "Data not removed because this is not the first run");
  }
);

// sync
var success = secureStorage.clearAllOnFirstRunSync();
TypeScript
// async
secureStorage.clearAllOnFirstRun().then(success => {
    console.log(success ? "Successfully removed all data on the first run" : "Data not removed because this is not the first run");
});

// sync
const success = secureStorage.clearAllOnFirstRunSync();

isFirstRun | isFirstRunSync

As a bonus, you can piggyback the 'first run' mechanism to do anything you want when the plugin detects this is the first run (after an install or install-delete-reinstall).

TypeScript
// sync
if (secureStorage.isFirstRunSync()) {
  // do whatever you want
}

// async
secureStorage.isFirstRun().then(isFirst => {
  // if isFirst is true, do whatever you like
});

Usage with Angular

In your view:

<Button text="set secure value" (tap)="setSecureValue()"></Button>

In your @Component:

import { SecureStorage } from "nativescript-secure-storage";

export class MyComponent {
  secureStorage = new SecureStorage();

  // a method that can be called from your view
  setSecureValue() {
    this.secureStorage.set({
      key: 'myKey',
      value: 'my value'
    }).then(success => { console.log(success)});
  }
}

iOS Security++

By default the plugin uses kSecAttrAccessibleAlwaysThisDeviceOnly access control to the keychain. This means that the keychain value can be accessed even if the device is locked. If you want to enhance security and you do not need background access, or if you want to allow the value to be backed up and migrated to another device, you can use any of keys defined here and pass it when you create an instance of SecureStorage, for example

declare const kSecAttrAccessibleWhenUnlockedThisDeviceOnly; // This is needed in case you don't have tns-platform-declarations module installed. 
const secureStorage = new SecureStorage(kSecAttrAccessibleWhenUnlockedThisDeviceOnly);

iOS Simulator

Currently this plugin defaults to using NSUserDefaults on iOS Simulators. You can change this behaviour by providing disableFallbackToUserDefaults to the constructor of SecureStorage. This then uses the keychain instead of NSUserDefaults on simulators.

If you're running into issues similar to issue_10, consider using the default behaviour again.

Credits

More Repositories

1

SocialSharing-PhoneGap-Plugin

πŸ‘¨β€β€οΈβ€πŸ’‹β€πŸ‘¨ Cordova plugin to share text, a file (image/PDF/..), or a URL (or all three) via the native sharing widget
Objective-C
1,779
star
2

nativescript-plugin-firebase

πŸ”₯ NativeScript plugin for Firebase
TypeScript
1,013
star
3

Calendar-PhoneGap-Plugin

πŸ“… Cordova plugin to Create, Change, Delete and Find Events in the native Calendar
Java
774
star
4

cordova-plugin-googleplus

βž• Cordova plugin to login with Google Sign-In on iOS and Android
Java
567
star
5

Toast-PhoneGap-Plugin

🍻 A Toast popup plugin for your fancy Cordova app
C++
509
star
6

nativescript-barcodescanner

πŸ”Ž NativeScript QR / barcode (bulk)scanner plugin
TypeScript
292
star
7

cordova-plugin-safariviewcontroller

🐯 🐘 🐊 Forget InAppBrowser for iOS - this is way better for displaying read-only web content in your PhoneGap app
Java
280
star
8

cordova-plugin-native-keyboard

🎹 Add a Slack / WhatsApp - style chat keyboard to your Cordova app!
Objective-C
275
star
9

Insomnia-PhoneGap-Plugin

πŸ˜ͺ Prevent the screen of the mobile device from falling asleep
JavaScript
266
star
10

cordova-plugin-touch-id

πŸ’… πŸ‘±β€β™‚οΈ Forget passwords, use a fingerprint scanner!
Objective-C
216
star
11

cordova-plugin-actionsheet

πŸ“‹ ActionSheet plugin for Cordova iOS and Android apps
JavaScript
208
star
12

cordova-plugin-3dtouch

πŸ‘‡ Quick Home Icon Actions and Link Previews
Objective-C
176
star
13

nativescript-pluginshowcase

An app I'm using to showcase a bunch of NativeScript plugins (also in the appstores!)
TypeScript
174
star
14

HealthKit

Cordova plugin for the iOS HealthKit framework
Objective-C
164
star
15

nativescript-local-notifications

πŸ“« NativeScript plugin to easily schedule local notifications
TypeScript
160
star
16

remove.bg

A Node.js wrapper for the remove.bg API
TypeScript
157
star
17

SSLCertificateChecker-PhoneGap-Plugin

πŸ›‚ Prevent Man in the Middle attacks with this Cordova plugin
Objective-C
155
star
18

VideoCapturePlus-PhoneGap-Plugin

πŸŽ₯
Objective-C
133
star
19

nativescript-fingerprint-auth

πŸ’… πŸ‘±β€β™‚οΈ Forget passwords, use a fingerprint scanner or facial recognition!
TypeScript
133
star
20

nativescript-feedback

πŸ“’ Non-blocking textual feedback for your NativeScript app
TypeScript
128
star
21

nativescript-ar

Augmented Reality NativeScript plugin
TypeScript
118
star
22

nativescript-nodeify

Makes most npm packages compatible with NativeScript
JavaScript
91
star
23

nativescript-speech-recognition

πŸ’¬ Speech to text, using the awesome engines readily available on the device.
TypeScript
89
star
24

nativescript-directions

πŸ‘† πŸ‘‰ πŸ‘‡ πŸ‘ˆ Open the Maps app to show directions to anywhere you like
TypeScript
81
star
25

nativescript-localize

Internationalization plugin for NativeScript using native capabilities of each platform
TypeScript
78
star
26

nativescript-nfc

πŸ“ NativeScript plugin to discover, read, and write NFC tags
TypeScript
77
star
27

nativescript-admob

NativeScript plugin to earn some precious πŸ’°πŸ’° with ads by Google AdMob
JavaScript
68
star
28

nativescript-keyboard-toolbar

βŒ¨οΈπŸ› Add a customizable toolbar on top of the soft keyboard
TypeScript
68
star
29

cordova-plugin-ios-longpress-fix

πŸ” Suppress the magnifying glass when long pressing an iOS9 PhoneGap app
Objective-C
67
star
30

nativescript-i18n

This is a plugin for Nativescript that implements native i18n in an easy manner.
JavaScript
64
star
31

cordova-plugin-taptic-engine

πŸ“³ Use Apple's Taptic Engine to vibrate your iPhone 6s (or up) in a variety of ways
Objective-C
61
star
32

Flashlight-PhoneGap-Plugin

πŸ”¦ Cordova plugin for using the torch / flashlight of your device
Java
60
star
33

cordova-plugin-backgroundaudio

🎢 Background Audio plugin for Cordova PhoneGap apps
Objective-C
57
star
34

nativescript-gradient

🎨 Easily add fancy (or subtle) gradient backgrounds to your views
TypeScript
53
star
35

nativescript-appversion

πŸ”’ NativeScript plugin to retrieve your app's package ID and current version
JavaScript
48
star
36

nativescript-app-shortcuts

πŸ‘‡ Home Icon Actions for your NativeScript app, now also for Android!
TypeScript
47
star
37

nativescript-email

βœ‰οΈ NativeScript plugin for opening draft e-mails
JavaScript
47
star
38

nativescript-calendar

πŸ“… NativeScript plugin to Create, Delete and Find Events in the native Calendar
TypeScript
44
star
39

barcodescanner-lib-aar

Project which compiles barcodescanner sources to an aar for use in Android projects
Java
41
star
40

nativescript-clipboard

πŸ“‹ NativeScript plugin to copy stuff to the device clipboard, and read from it again
TypeScript
40
star
41

footplr

An app using NativeScript and Vue with Firebase (Firestore)
HTML
38
star
42

nativescript-ocr

πŸ“° πŸ” Tesseract-powered OCR plugin for NativeScript
TypeScript
38
star
43

nativescript-apple-sign-in

Sign In With Apple, as seen on WWDC 2019, available with iOS 13
TypeScript
38
star
44

nativescript-printer

πŸ“  Send an image or the screen contents to a physical printer
TypeScript
35
star
45

HeadsetDetection-PhoneGap-Plugin

🎧 A PhoneGap plugin for detection of a headset (wired or bluetooth)
Java
34
star
46

nativescript-numeric-keyboard

πŸ”’ Replace the meh default number/phone keyboard with this stylish one
TypeScript
33
star
47

cordova-plugin-app-icon-changer

Change the homescreen icon of your Cordova iOS app at runtime!
Objective-C
33
star
48

nativescript-keyframes

Facebook Keyframes plugin - if CSS animations don't cut it for ya
JavaScript
32
star
49

nativescript-star-printer

🌟 Print directly to Star Micronics printers from your NativeScript app! http://www.starmicronics.com/
Objective-C
31
star
50

nativescript-bluetooth-demo

JavaScript
30
star
51

nativescript-android-tv

A little PoC demonstrating code sharing between Android Phone and TV apps
TypeScript
27
star
52

nativescript-homekit

🏑 HomeKit plugin for your fancy NativeScript app
TypeScript
24
star
53

nativescript-plugin-firebase-demo

Demo app for the NativeScript Firebase plugin
JavaScript
24
star
54

nativescript-performance-monitor

⚑ Proof your app maintains 60-ish FPS by collecting data or showing it on screen with this NativeScript plugin!
TypeScript
21
star
55

cordova-plugin-webviewcolor

Objective-C
19
star
56

nativescript-webview-utils

πŸ•ΈAdd request headers to a NativeScript WebView. Perhaps more utils later.
TypeScript
19
star
57

nativescript-particle

πŸ•Ή Control your https://particle.io devices from NativeScript
TypeScript
19
star
58

nativescript-appavailability

πŸ”Ž NativeScript plugin to check whether or not another app is installed on the device
JavaScript
19
star
59

nativescript-pushy

Easy push notifications for your NativeScript app!
TypeScript
19
star
60

nativescript-mapbox-demo

Demo app for the NativeScript Mapbox plugin
JavaScript
18
star
61

nativescript-pedometer

🐾 step count tracking plugin for your NativeScript app
TypeScript
17
star
62

nativescript-taptic-engine

πŸ“³ Use Apple's Taptic Engine to vibrate your iPhone 6s (and up) in a variety of ways
Vue
16
star
63

nativescript-local-notifications-demo

Demo app for the NativeScript local notifications plugin
JavaScript
15
star
64

nativescript-app-icon-changer

Change the homescreen icon of your NativeScript iOS app at runtime!
TypeScript
15
star
65

nativescript-aws

[DEPRECATED, see the readme] NativeScript plugin for Amazon's AWS ☁️ services
JavaScript
15
star
66

nativescript-dark-mode

NativeScript plugin to tap into iOS13's Dark Mode and Android's Night Mode configs
TypeScript
14
star
67

nativescript-headset-detection

Detect when a headphone (jack or bluetooth) is (dis)connected.
TypeScript
13
star
68

CameraRoll-PhoneGap-Plugin

Objective-C
11
star
69

NativePageTransitions-Ionic-Demo

Demo App for Ionic framwork apps with the Native Page Transitions plugin
JavaScript
10
star
70

X-Services-PhoneGap-Build-Plugins-Demo

A demo repo for all of our PhoneGap Build plugins
JavaScript
10
star
71

nativescripthighcharts

Demoing how to add highcharts to your NativeScript app
TypeScript
9
star
72

cordova-plugin-researchkit

Cordova / PhoneGap plugin for the Apple's ResearchKit
Objective-C
8
star
73

nativescript-call

NativeScript plugin to interact with the native Call UI
TypeScript
7
star
74

phonegapbuildmonitor

Repository for the iOS and Android PhoneGap Build app: Buildmeister
CSS
6
star
75

nativescript-calendar-demo

Demo app for the NativeScript Calendar plugin
JavaScript
5
star
76

ns-vue-firebase-test

Sample code to show how to use Firebase with the NS-Vue Vue CLI template
JavaScript
5
star
77

nativescript-randombytes

πŸ”€ πŸ”’ A NativeScript shim for the randombytes package
JavaScript
4
star
78

nativescript-izettle

Accept payments directly in your NativeScript app with iZettle
4
star
79

nativescript-admob-demo

Demo app for the NativeScript AdMob plugin
JavaScript
4
star
80

nativescript-date-utils

A simple plugin with a few date-related utilities
Shell
3
star
81

ios-framework-barcodescanner

An iOS BarcodeScanner .framework library, wrapping the built-in iOS barcodescanner capabilities
Objective-C
2
star
82

bridgematebroadcast

Java
2
star
83

nativescript-snapkit

Log in to your app with your Snapchat account
TypeScript
2
star
84

nativescript-barcodescanner-demo

Demo app for the NativeScript BarcodeScanner plugin
JavaScript
2
star
85

nativescript-ios-out-of-memory

Reproducing NativeScript issue 4490
JavaScript
1
star
86

nativescript-wkwebview

NativeScript WKWebView plugin for iOS
JavaScript
1
star
87

iOSMinVersion-PhoneGapBuild-Plugin

A PhoneGap Build plugin for overriding the minimal iOS version to deploy your app on.
1
star
88

iPadLandscapeEnabler-PhoneGapBuild-Plugin

1
star
89

mgggplus-frontend

Mobile client
JavaScript
1
star
90

nativescript-socket-mobile

1
star
91

Karma-App

JavaScript
1
star
92

nativescript-mapbox-vision

This is just a test, please ignore this repo for now 😊
TypeScript
1
star
93

cordova-and-nativescript-pokemon-app

Showing how to create a similar app in both Cordova and NativeScript, using plugins for SocialSharing and NetworkInformation.
TypeScript
1
star