All Projects → jeff-zucker → solid-auth-cli

jeff-zucker / solid-auth-cli

Licence: MIT license
a node/command-line Solid client with persistent login

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to solid-auth-cli

solid-file-client
A Javascript library for creating and managing files and folders in Solid data stores
Stars: ✭ 49 (+345.45%)
Mutual labels:  solid, linked-data-platform
solid-focus
Solid Task Manager
Stars: ✭ 48 (+336.36%)
Mutual labels:  solid
solid-client-js
Library for accessing data and managing permissions on data stored in a Solid Pod
Stars: ✭ 201 (+1727.27%)
Mutual labels:  solid
archimedes-jvm
Archimedes's implementation for the Java Virtual Machine (JVM)
Stars: ✭ 24 (+118.18%)
Mutual labels:  solid
previewjs
Preview UI components in your IDE instantly
Stars: ✭ 1,331 (+12000%)
Mutual labels:  solid
archimedes-js
Archimedes's implementation for JavaScript and TypeScript
Stars: ✭ 34 (+209.09%)
Mutual labels:  solid
djburger
Framework for safe and maintainable web-projects.
Stars: ✭ 75 (+581.82%)
Mutual labels:  solid
spring-SOLID
Spring 예제로 보는 SOLID
Stars: ✭ 53 (+381.82%)
Mutual labels:  solid
fastify-vite
This plugin lets you load a Vite client application and set it up for Server-Side Rendering (SSR) with Fastify.
Stars: ✭ 497 (+4418.18%)
Mutual labels:  solid
specification
RDF vocabulary and specification
Stars: ✭ 21 (+90.91%)
Mutual labels:  solid
solid-ui-react
React SDK using @inrupt/solid-client
Stars: ✭ 82 (+645.45%)
Mutual labels:  solid
refactoring-for-testability-cpp
Hard-to-test patterns in C++ and how to refactor them
Stars: ✭ 40 (+263.64%)
Mutual labels:  solid
awesome-solid-js
Curated resources on building sites with SolidJS, a brand new way(now 1.0) to build Javascript based interactive web applications. A very close looking cousin to React/JSX by syntax, and to Svelte by few important principles(compiler and fine-grained reactivity), it's a highly optimised way to deliver web applications with best-in-class performa…
Stars: ✭ 317 (+2781.82%)
Mutual labels:  solid
NiceDemo
iOS project, built on improved MVP architecture using Coordinator pattern for routing 😎
Stars: ✭ 54 (+390.91%)
Mutual labels:  solid
solid
Solid Android components
Stars: ✭ 33 (+200%)
Mutual labels:  solid
typesafe-i18n
A fully type-safe and lightweight internationalization library for all your TypeScript and JavaScript projects.
Stars: ✭ 1,227 (+11054.55%)
Mutual labels:  solid
babel-plugin-solid-undestructure
A Babel plugin for SolidJS that allows you to destructure component props without losing reactivity.
Stars: ✭ 45 (+309.09%)
Mutual labels:  solid
0data
Own your data, all of it.
Stars: ✭ 53 (+381.82%)
Mutual labels:  solid
warp
Warp - an LDP file manager
Stars: ✭ 58 (+427.27%)
Mutual labels:  solid
solid-zustand
🐻 State management in Solid using zustand.
Stars: ✭ 44 (+300%)
Mutual labels:  solid

solid-auth-cli

a node/command-line Solid client with persistent login

NOTE : solid-auth-cli (this library) has been replaced by solid-node-client. It does everything this library does and more. Please use solid-node-client instead!

This library supports login and persistent connection to Solid from command-line and node apps. It (and apps using it) can make authorized fetches either directly using the fetch and REST APIs, or using rdflib's fetcher.

Use with rdflib.js

You must be using Version 0.19.1 or later of rdflib.js to use it in conjunction with solid-auth-cli. And you must initialize your fetcher as shown below.

const $rdf = require('rdflib');
const auth = require('solid-auth-cli');
const store = $rdf.graph();
const fetcher = $rdf.fetcher( store, {fetch:auth.fetch} );
auth.login().then( session => {
    fetcher.load( ... ).then( response => {
        // ... any rdflib methods
    }, console.log() )
}, console.log() )

Wrting scripts that work in both the browser and node

Solid-auth-cli is built on top of solid-cli, providing persistance and the same API as solid-auth-client. Since it mimics all of solid-auth-client's methods, scripts can work in both browserless and browser contexts by switching which library is called like this:

if(typeof window === "undefined"){ solid = { auth:require('solid-auth-cli') } } solid.auth.login()... // this will now use solid-auth-client in the browser // and solid-auth-cli in node

login()

login( path-to-credentials-json-file )

login({ idp:"https://idp.example.com", username:"you", password:"hmm" })

The login method needs an Identity Provider, username, and password. Those may be passed in as an object or read from a specified JSON file. If called with no arguments, login() will look for a configuration file in ~/.solid-auth-cli-config.json and, if it does not find it will look for the environment SOLID_IDP, SOLID_USERNAME, and SOLID_PASSWORD.

An example

const solid = { auth:require('solid-auth-cli') }
const resource = "https://me.example.com/private/hidden.ttl"
const expected = "only the owner"                                 
const idp = "https://example.com"

console.log("logging in ...")
login().then( session => {
    console.log(`logged in as <${session.webId}>`)
    solid.auth.fetch(resource).then( response => {
        if (!response.ok) console.log(response.status+" "+response.statusText)
        response.text().then( content => {
            if( content.match(new RegExp(expected)) ) console.log("ok")
            else console.log("Got something , but not the right thing.")
        },e => console.log("Error parsing : "+e))
    },e => console.log("Error fetching : "+e))
},e => console.log("Error logging in : "+e))

async function login() {
    var session = await solid.auth.currentSession()
    if (!session) session = await solid.auth.login()
    return session;
}

© Jeff Zucker, 2019, may be freely distributed using an MIT license

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].