• Stars
    star
    106
  • Rank 323,930 (Top 7 %)
  • Language
    JavaScript
  • License
    BSD 2-Clause "Sim...
  • Created about 5 years ago
  • Updated about 1 month ago

Reviews

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

Repository Details

Session store for svelte (currently only for JWT)

Svelte v3 npm License bundlejs downloads GitHub Issues Build Status Styled with prettier Commitizen friendly Known Vulnerabilities Coverage Status Tested with TestCafe

svelte-session-manager

Session store for svelte (currently only for JWT)

usage

import { derived } from 'svelte';
import { Session, login } from 'svelte-session-manager';

// use localStorage as backing store
let session = new Session(localStorage);

// session may still be valid
if(!session.isValid) {
  await login(session, 'https://mydomain.com/authenticate', 'a user', 'a secret');
}

session.isValid; // true when auth was ok or localStorage token is still valid


export const values = derived(
  session,
  ($session, set) => {
    if (!session.isValid) {
      set([]); // session has expired no more data
    } else {
      fetch('https://mydomain.com/values', {
        headers: {
          ...session.authorizationHeader
        }
      }).then(async data => set(await data.json()));
    }
    return () => {};
  }
,[]);

// $values contains fetch result as long as session has not expired

run tests

export BROWSER=safari|chrome|...
npm|yarn test

The test runs the following requests against the server

  • successful auth
curl -X POST -d '{"username":"user","password":"secret"}' 'http://[::]:5000/api/login'
{"access_token":"eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbnRpdGxlbWVudHMiOiJhLGIsYyIsImlhdCI6MTYwNDY2NDI0NywiZXhwIjoxNjA0NjY0MjYyfQ.qyjeoCuXO0iyYwSxM2sM02_BVhaZobRmEWam1M8Hzkx51nbsAuTR8G1rNgz1COo_KvbCU7LwZt7qnSEFB1tcwyDA1eBxwc2Wb7JxWgQ50m1IWkr2JCgY1seWRJRcwZBXiTRtiPqhzofP-l3S-CBluzU48cd4yzoPayczLkKuPK4"}
  • invalid credentials
curl -X POST -d '{"username":"user","password":"wrong"}' 'http://[::]:5000/api/login'
{"message":"Unauthorized"}

Live Example

live example

API

Table of Contents

login

Bring session into the valid state by calling the authorization endpoint and asking for a access_token. Executes a POST on the endpoint url expecting username, and password as json

Parameters

  • session Session to be opened
  • endpoint string authorization url
  • username string id of the user
  • password string user credentials
  • tokenmap Object token names in response to internal known values (optional, default defaultTokenMap)

Returns Promise<string> error message in case of failure or undefined on success

handleFailedResponse

Extract error description from response.

Parameters

Returns Promise<string>

SessionData

Data as preserved in the backing store.

Type: Object

Properties

  • username string user name (id)
  • access_token string JWT token
  • refresh_token string JWT token

msecsRequiredForRefresh

Time required to execute a refresh

Type: number

Session

User session. To create as session backed by browser local storage.

let session = new Session(localStorage);

or by browser session storage

let session = new Session(sessionStorage);

Parameters

Properties

  • entitlements Set<string>
  • subscriptions Set<Object> store subscriptions
  • expirationDate Date when the access token expires
  • access_token string token itself
  • refresh_token string refresh token

update

Consume auth response data and reflect internal state.

Parameters

refresh

Refresh with refresh_token.

Returns Promise<boolean> true if refresh was succcessfull false otherwise

authorizationHeader

Http header suitable for fetch.

Returns Object header The http header.

Returns string header.Authorization The Bearer access token.

isValid

As long as the expirationTimer is running we must be valid.

Returns boolean true if session is valid (not expired)

invalidate

Remove all tokens from the session and the backing store.

hasEntitlement

Check presence of an entitlement.

Parameters

  • name string of the entitlement

Returns boolean true if the named entitlement is present

subscribe

Fired when the session changes.

Parameters

decode

Extract and decode the payload.

Parameters

Returns Object payload object

install

With npm do:

npm install svelte-session-manager

license

BSD-2-Clause

More Repositories

1

svelte-websocket-store

svelte store with a websocket backend
JavaScript
283
star
2

pratt-parser

TDOP parser https://tdop.github.io
JavaScript
14
star
3

svelte-guard-history-router

svelte guarded history router
JavaScript
11
star
4

npm-pkgbuild

create arch, rpm and debian packages from npm
JavaScript
10
star
5

svelte-common

common components utils used in svelte apps
JavaScript
8
star
6

rtsp-archive

archive rtsp streams with ffmpeg
JavaScript
7
star
7

svelte-time-series

display time series data with svelte
Svelte
5
star
8

template-svelte-app

template for svelte / rollup applications
CSS
5
star
9

fetch-rate-limit-util

handle fetch rate limits
JavaScript
5
star
10

uti

javascript implementation of a "Universal Type Identifier"
JavaScript
5
star
11

repository-provider

abstract interface to git repository providers like github bitbucket
JavaScript
4
star
12

multi-path-matcher

finds and decodes best matching path
JavaScript
4
star
13

svelte-log-view

show log content
Svelte
4
star
14

npm-navigator

navigate npm dependencies visually
JavaScript
4
star
15

svn-dav-fs

handler for 'svn+https' url scheme (plain js svn dav fs)
JavaScript
3
star
16

npm-package-walker

Walks down the local npm package dependency tree and calls a visitor function for each package
JavaScript
3
star
17

koa-github-hook-handler

handle github/gitea Webhook requests
JavaScript
3
star
18

aggregation-repository-provider

aggregates several repository providers into one
JavaScript
2
star
19

config-expander

expands configuration templates
JavaScript
2
star
20

system-dashboard-frontend

frontend for the system dashboard
Svelte
2
star
21

rollup-plugin-native

import native (NAPI) modules
JavaScript
2
star
22

mqtt-timeseries-leveldb

writes mqtt timeseries messages into leveldb
JavaScript
2
star
23

hinted-tree-merger

merges two trees guided with hints
JavaScript
2
star
24

arch-linux-arm

setup single board computers with arch-linux
Shell
2
star
25

local-repository-provider

repository provider using local (native) git commands
JavaScript
2
star
26

template-svelte-component

template for svelte components apply with npm-template-sync
TypeScript
2
star
27

svelte-command

"general command execution handling for svelte components"
JavaScript
2
star
28

entitlement-provider-frontend

web frontend for the entitlement-provider
Svelte
1
star
29

aggregate-async-iterator

Aggregates several async iterators into one
JavaScript
1
star
30

svn-repository-provider

provider of subversion repositories
JavaScript
1
star
31

svelte-entitlement

JavaScript
1
star
32

repo-util

operate on remote repositories
JavaScript
1
star
33

named-conf

read/write named.conf
JavaScript
1
star
34

npm-dep-graph

analyse npm dependencies
TypeScript
1
star
35

component-manager

manages components and its dependencies
JavaScript
1
star
36

sync-test-repository

test template-tools
JavaScript
1
star
37

scope-reporter

Keeps track of scope identifiers during processing. Can be used for better logging/reporting. The position (path to) of the issue/event is aggregated while the control flow reaches the point of the occurence
JavaScript
1
star
38

gitlab-repository-provider

repository provider for gitlab hosted repos
JavaScript
1
star
39

registry-mixin

Register objects and factories for later lookup
JavaScript
1
star
40

statetransition-mixin

mixin for promise based state transitions
JavaScript
1
star
41

sftp-resolver-fs

resolves sftp urls
JavaScript
1
star
42

SymatemExplorer

browse thourgh Symatem store
JavaScript
1
star
43

rpm-codec

rpm-codec is a streaming rpm packer, basically the rpm version of tar-stream
JavaScript
1
star
44

notification

javascript notification handling
JavaScript
1
star
45

bitbucket-repository-provider

repository provider for bitbucket
JavaScript
1
star
46

iterable-string-interceptor

Intercept Iterable string - backbone for templates
JavaScript
1
star
47

hook-ci

simple ci to be triggered by git hooks
JavaScript
1
star
48

entitlement-provider

provide entitlements
JavaScript
1
star
49

etag-cache-leveldb

etag cache based on leveldb
JavaScript
1
star
50

repository-provider-test-support

test support for repository providers
JavaScript
1
star
51

entitlement

npm module for entitlements
JavaScript
1
star
52

browser-ava

run ava test in the browser
JavaScript
1
star
53

sorm

node js (sqlite) schema manipulation
JavaScript
1
star
54

mf-hosting-frontend

Hosting definitions for mf frontend
Shell
1
star
55

loglevel-mixin

mixin to declare logging methods named after a given set of log levels
JavaScript
1
star
56

github-repository-provider

repository provider for github
JavaScript
1
star
57

hook-ci-frontend-svelte

svelte frontend for hook-ci
Svelte
1
star
58

mkpr

create pull request by streaming content through a filter
JavaScript
1
star