Cyzzaro / VBA-LocalStorage

Local storage for VBA

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

VBA-LocalStorage

Note: Under development

Store key-value information for Workbooks/Documents locally with moderate security. This can be useful for cases such as user-specific preferences, application state, and, in trusted environments, authentication information.

Stored values are encrypted with either an ApplicationKey, which is stored in VBA with the workbook, or a user-supplied password:

  • ApplicationKey: the values are secure while at-rest when separate from the workbook, but if someone gains access to the computer and the workbook is unprotected, they will be able to access the stored values. This is a reasonable baseline for security and generally matches the approach used with browsers.
  • If additional security is desired, the user can elect to use a user-supplied password for encryption which would secure the values at-rest and would require entering the password to decrypt the values even with access to the computer and workbook.

Overview

User Flow:

  1. Request Local Storage On first access, a dialog is displayed requesting usage of local storage for the given workbook/document. If the user rejects local storage, this preference is saved and in-memory storage will be used. If the user accepts, encryption with ApplicationKey will be used. Finally, the user has an option to accept with user-supplied password
  2. On workbook/document re-open, if encrypted with user-supplied password, display Unlock Local Storage user form, otherwise decrypts automatically

Usage

Follows browser's localStorage approach with GetItem, SetItem, RemoveItem, and Clear

Private Token As String

Sub Login()
  Token = LocalStorage.GetItem("token")

  If Token = "" Then
    Token = "..."
    LocalStorage.SetItem "token", Token
  End If
End Sub

Sub Logout()
  Token = ""
  LocalStorage.RemoveItem "token"
End Sub

Sub Cleanup()
  LocalStorage.Clear
End Sub

Installation

  1. Import LocalStorage.bas, RequestLocalStorage.frm, and UnlockLocalStorage.frm
  2. Set unique and strong value for ApplicationKey constant in LocalStorage.bas

About

Local storage for VBA

License:MIT License


Languages

Language:Visual Basic 100.0%