# solid-auth-cli

> **a node/command-line Solid client with persistent login** [![NPM](https://nodei.co/npm/solid-auth-cli.png)](https://nodei.co/npm/solid-auth-cli/)

Latest version **1.0.15** (published 2020-09-08) · MIT license · 0 weekly downloads

## Install

```sh
npm install solid-auth-cli
pnpm add solid-auth-cli
yarn add solid-auth-cli
bun add solid-auth-cli
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.0.15 |
| Published | 2020-09-08 |
| First published | 2019-01-13 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 6 |
| Unpacked size | 21.8 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Author | Jeff Zucker |
| Maintainers | jeff-zucker |

## Links

- npm: https://www.npmjs.com/package/solid-auth-cli
- npm.io page: https://npm.io/package/solid-auth-cli

## Dependencies (6)

- [n3](https://npm.io/package/n3.md) ^1.0.3
- [async](https://npm.io/package/async.md) ^2.6.1
- [jsonld](https://npm.io/package/jsonld.md) ^1.4.0
- [@solid/cli](https://npm.io/package/@solid/cli.md) 0.1.3
- [solid-rest](https://npm.io/package/solid-rest.md) ^1.2.2
- [cross-fetch](https://npm.io/package/cross-fetch.md) ^3.0.4

## Recent versions

- 1.0.15 (latest) — 2020-09-08
- 1.0.14 — 2020-04-22
- 1.0.13 — 2020-04-21
- 1.0.12 — 2020-03-08
- 1.0.11 — 2020-03-06
- 1.0.10 — 2019-11-24
- 1.0.9 — 2019-11-20
- 1.0.8 — 2019-07-10
- 1.0.7 — 2019-06-15
- 1.0.6 — 2019-06-14
- 0.1.14 — 2019-06-14
- 0.2.7 — 2019-06-14
- 1.0.5 — 2019-06-14
- 1.0.4 — 2019-06-14
- 1.0.3 — 2019-06-14
- … 22 more at https://npm.io/package/solid-auth-cli/versions

## README

# solid-auth-cli
**a node/command-line Solid client with persistent login**
<br>
<br>
[![NPM](https://nodei.co/npm/solid-auth-cli.png)](https://nodei.co/npm/solid-auth-cli/)

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.

  ```javascript
  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
```javascript
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;
}
```

&copy; Jeff Zucker, 2019, may be freely distributed using an MIT license

---
_Source: https://npm.io/package/solid-auth-cli · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
