All Projects → seanmajorpayne → openDashAuth

seanmajorpayne / openDashAuth

Licence: MIT license
A Multi-User Authentication Baseplate for Dash Applications

Programming Languages

python
139335 projects - #7 most used programming language
HTML
75241 projects
Mako
254 projects
Dockerfile
14818 projects

Projects that are alternatives of or similar to openDashAuth

Dash Oil And Gas Demo
Dash Demo App - New York Oil and Gas
Stars: ✭ 156 (+437.93%)
Mutual labels:  dash
Dash Docset Tensorflow
dash/zeal docset for tensorflow
Stars: ✭ 190 (+555.17%)
Mutual labels:  dash
Dash.jl
Dash for Julia - A Julia interface to the Dash ecosystem for creating analytic web applications in Julia. No JavaScript required.
Stars: ✭ 248 (+755.17%)
Mutual labels:  dash
Dash Flask Login
Implementation of Flask-login on top of Dash.
Stars: ✭ 158 (+444.83%)
Mutual labels:  dash
Antminer Monitor
Cryptocurrency ASIC mining hardware monitor using a simple web interface
Stars: ✭ 176 (+506.9%)
Mutual labels:  dash
Slapdash
Boilerplate for bootstrapping scalable multi-page Dash applications
Stars: ✭ 225 (+675.86%)
Mutual labels:  dash
Dash Component Boilerplate
Get started creating your own Dash components here.
Stars: ✭ 149 (+413.79%)
Mutual labels:  dash
dash
Collection of libraries, utilities, and core Garry's Mod changes intended to improve development of addons and gamemodes
Stars: ✭ 46 (+58.62%)
Mutual labels:  dash
Vscode Dash
Dash, Zeal and Velocity documentation integration in Visual Studio Code 🔎📖
Stars: ✭ 176 (+506.9%)
Mutual labels:  dash
Bitcoinlib
Bitcoin and other Cryptocurrencies Library for Python. Includes a fully functional wallet, Mnemonic key generation and management and connection with various service providers to receive and send blockchain and transaction information.
Stars: ✭ 247 (+751.72%)
Mutual labels:  dash
Dash Contrib Docset Feeds
A collection of Dash's user contributed docset feed for using with Zeal
Stars: ✭ 168 (+479.31%)
Mutual labels:  dash
Bitcoin Etl
ETL scripts for Bitcoin, Litecoin, Dash, Zcash, Doge, Bitcoin Cash. Available in Google BigQuery https://goo.gl/oY5BCQ
Stars: ✭ 174 (+500%)
Mutual labels:  dash
Dash
Analytical Web Apps for Python, R, Julia, and Jupyter. No JavaScript Required.
Stars: ✭ 15,592 (+53665.52%)
Mutual labels:  dash
P2p Cdn Sdk Javascript
Free p2p cdn github javascript sdk to reduce video streaming costs of live and on demand video using webrtc by upto 90% and improve scalability by 6x - 🚀 Vadootv 🚀
Stars: ✭ 158 (+444.83%)
Mutual labels:  dash
2019-nCoV-dash
新型冠状病毒(2019-nCoV)肺炎(COVID-19)疫情展示
Stars: ✭ 13 (-55.17%)
Mutual labels:  dash
Shaka Player Embedded
Shaka Player in a C++ Framework
Stars: ✭ 153 (+427.59%)
Mutual labels:  dash
Vps
A handy bash script to setup crypto masternodes in no time. Initially developed for $PIVX. Now many more ;-)
Stars: ✭ 220 (+658.62%)
Mutual labels:  dash
ReferenceApplication
No description or website provided.
Stars: ✭ 63 (+117.24%)
Mutual labels:  dash
alpine-dash-hls
A ready-prepared video transcoding pipeline to create DASH/ HLS compatible video files & playlists
Stars: ✭ 43 (+48.28%)
Mutual labels:  dash
Php Ffmpeg Video Streaming
📼 Package media content for online streaming(DASH and HLS) using FFmpeg
Stars: ✭ 246 (+748.28%)
Mutual labels:  dash

openDashAuth

Dash Multi-User Authentication

Dash does not natively support multi-user authentication (at least not for free). While looking for a solution to support my own app, I noticed many developers online needed the ability to support dedicated viewpoints for individual users, but the official forums provided little to no help.

As far as I'm aware, this is the only free and publicly available solution to support multiple users within Dash (at least that is useful in a real-world application).

How it Works

Since Dash is built on top of Flask, this application uses Flask as the primary server and serves Dash as an embedded app.

This adds more benefits on top of login functionality, as this allows for the construction of a full-fledged application in addition to the dashboard view.

Flask's login-manager is used to manage the user's session. Normally, in a Flask app, routes.py defines all of the URL-page mappings. This is also where the current-user is identified to securely serve content based on whether or not the user is logged in.

By creating a method within routes that returns the current-user, one can import and reference this user in Dash, allowing for database queries based on the individual user (while simultaneously preventing the user from getting access to other user's data).

demo gif

Getting Started

Simply perform a git pull to grab the files from this repo.

git clone https://github.com/seanmajorpayne/dash_multi_user_authentication

Open your terminal and navigate to the main application folder

$ cd /path/to/dash_multi_user_authentication
# The command on windows is 'dir' not 'cd'

Then run the application with docker

$ docker-compose build
$ docker-compose up

You can stop the application with

$ docker-compose down

The app is configured with a single user 'john' and password 'pw' which you can use to see the functionality provided by the app. You can add more users easily through the database. Note that the config file currently has a secret key that always amounts to true. This needs to be changed for a production application.

Security

While this template is offered 'as is' and I don't make any guarantees about security, there are a few helpful security features included. Flask-WTF forms have CSRF protection by default. Flask configures Jinja2 to automatically escape values unless explicitly told not to, which helps with cross site scripting issues.

For a full overview of Flask Security, check here

Contributions

Pull requests are welcome.

License

See the license details here

Acknowledgements

Thank you to Miguel Ginsberg for the Flask Mega Tutorial.

To Do

  • Add requirements.txt
  • Add License
  • Clean up Bootstrap Styling
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].