@@ -33,15 +33,8 @@ const CLITokenCache = require('./token-cache');
3333const utils = require ( './util' ) ;
3434const pkg = require ( '../package.json' ) ;
3535const inquirer = require ( 'inquirer' ) ;
36- const darwinKeychain = require ( 'keychain' ) ;
3736const { stringifyStream } = require ( '@discoveryjs/json-ext' ) ;
3837const progress = require ( 'cli-progress' ) ;
39- const darwinKeychainSetPassword = promisify (
40- darwinKeychain . setPassword . bind ( darwinKeychain )
41- ) ;
42- const darwinKeychainGetPassword = promisify (
43- darwinKeychain . getPassword . bind ( darwinKeychain )
44- ) ;
4538let keytar = null ;
4639try {
4740 keytar = require ( 'keytar' ) ;
@@ -1803,20 +1796,9 @@ class BoxCommand extends Command {
18031796 async getEnvironments ( ) {
18041797 try {
18051798 switch ( process . platform ) {
1806- case 'darwin' : {
1807- try {
1808- const password = await darwinKeychainGetPassword ( {
1809- account : 'Box' ,
1810- service : 'boxcli' ,
1811- } ) ;
1812- return JSON . parse ( password ) ;
1813- } catch {
1814- // fallback to env file if not found
1815- }
1816- break ;
1817- }
1818-
1819- case 'win32' : {
1799+ case 'darwin' :
1800+ case 'win32' :
1801+ case 'linux' : {
18201802 try {
18211803 if ( ! keytar ) {
18221804 break ;
@@ -1829,7 +1811,7 @@ class BoxCommand extends Command {
18291811 return JSON . parse ( password ) ;
18301812 }
18311813 } catch {
1832- // fallback to env file if not found
1814+ // fallback to env file if keytar fails or secure storage not available
18331815 }
18341816 break ;
18351817 }
@@ -1859,27 +1841,27 @@ class BoxCommand extends Command {
18591841 Object . assign ( environments , updatedEnvironments ) ;
18601842 try {
18611843 let fileContents = JSON . stringify ( environments , null , 4 ) ;
1844+
18621845 switch ( process . platform ) {
1863- case 'darwin' : {
1864- await darwinKeychainSetPassword ( {
1865- account : 'Box' ,
1866- service : 'boxcli' ,
1867- password : JSON . stringify ( environments ) ,
1868- } ) ;
1869- fileContents = '' ;
1870- break ;
1871- }
1872-
1873- case 'win32' : {
1874- if ( ! keytar ) {
1875- break ;
1846+ case 'darwin' :
1847+ case 'win32' :
1848+ case 'linux' : {
1849+ if ( keytar ) {
1850+ try {
1851+ await keytar . setPassword (
1852+ 'boxcli' /* service */ ,
1853+ 'Box' /* account */ ,
1854+ JSON . stringify ( environments ) /* password */
1855+ ) ;
1856+ fileContents = '' ;
1857+ } catch ( keytarError ) {
1858+ // fallback to file storage if secure storage fails
1859+ DEBUG . init (
1860+ 'Could not store credentials in secure storage, falling back to file: %s' ,
1861+ keytarError . message
1862+ ) ;
1863+ }
18761864 }
1877- await keytar . setPassword (
1878- 'boxcli' /* service */ ,
1879- 'Box' /* account */ ,
1880- JSON . stringify ( environments ) /* password */
1881- ) ;
1882- fileContents = '' ;
18831865 break ;
18841866 }
18851867
0 commit comments