|
1 | | -# authorizer |
| 1 | +<p align="center"> |
| 2 | + <a href="https://authorizer.dev"> |
| 3 | + <img alt="Logo" src="https://github.com/authorizerdev/authorizer/blob/main/assets/logo.png" width="60" /> |
| 4 | + </a> |
| 5 | +</p> |
| 6 | +<h1 align="center"> |
| 7 | + Authorizer |
| 8 | +</h1> |
| 9 | + |
| 10 | + |
| 11 | +**Authorizer** is an open-source authentication and authorization solution for your applications. Bring your database and have complete control over the user information. You can self-host authorizer instances and connect to any SQL database. |
| 12 | + |
| 13 | +## Table of contents |
| 14 | +- [Introduction](#introduction) |
| 15 | +- [Getting Started](#getting-started) |
| 16 | +- [Contributing](https://github.com/authorizerdev/authorizer/blob/main/.github/CONTRIBUTING.md) |
| 17 | +- [Docs](http://docs.authorizer.dev/) |
| 18 | +- [Join Community](https://discord.gg/2fXUQN3E) |
| 19 | + |
| 20 | +# Introduction |
| 21 | + |
| 22 | +<img src="https://github.com/authorizerdev/authorizer/blob/main/assets/authorizer-architecture.png" style="height:20em"/> |
| 23 | + |
| 24 | +#### We offer the following functionality |
| 25 | + |
| 26 | +- ✅ Sign-in / Sign-up with email ID and password |
| 27 | +- ✅ Secure session management |
| 28 | +- ✅ Email verification |
| 29 | +- ✅ APIs to update profile securely |
| 30 | +- ✅ Forgot password flow using email |
| 31 | +- ✅ Social logins (Google, Github, more coming soon) |
| 32 | + |
| 33 | +## Project Status |
| 34 | + |
| 35 | +⚠️ **Authorizer is still an early beta! missing features and bugs are to be expected!** If you can stomach it, then bring authentication and authorization to your site today! |
| 36 | + |
| 37 | +## Roadmap |
| 38 | + |
| 39 | +- Password-less login with email and magic link |
| 40 | +- Role-based access management system |
| 41 | +- Support more JWT encryption algorithms (Currently supporting HS256) |
| 42 | +- 2 Factor authentication |
| 43 | +- Back office (Admin dashboard to manage user) |
| 44 | +- Support more database |
| 45 | +- VueJS SDK |
| 46 | +- Svelte SDK |
| 47 | +- React Native SDK |
| 48 | +- Flutter SDK |
| 49 | +- Android Native SDK |
| 50 | +- iOS native SDK |
| 51 | +- Golang SDK |
| 52 | +- Python SDK |
| 53 | +- PHP SDK |
| 54 | +- WordPress plugin |
| 55 | +- Kubernetes Helm Chart |
| 56 | +- [Local Stack](https://github.com/localstack/localstack) |
| 57 | +- AMI |
| 58 | +- Digital Ocean Droplet |
| 59 | +- Azure |
| 60 | +- Render |
| 61 | +- Edge Deployment using Fly.io |
| 62 | +- Password-less login with mobile number and OTP SMS |
| 63 | + |
| 64 | +# Getting Started |
| 65 | + |
| 66 | +## Trying out Authorizer |
| 67 | + |
| 68 | +This guide helps you practice using Authorizer to evaluate it before you use it in a production environment. It includes instructions for installing the Authorizer server in standalone mode. |
| 69 | + |
| 70 | +## Installing a simple instance of Authorizer |
| 71 | + |
| 72 | +Deploy Authorizer using [heroku](https://github.com/authorizerdev/authorizer-heroku) and quickly play with it in 30seconds |
| 73 | +<br/><br/> |
| 74 | +[](https://heroku.com/deploy?template=https://github.com/authorizerdev/authorizer-heroku) |
| 75 | + |
| 76 | +### Things to consider |
| 77 | + |
| 78 | +- For social logins, you will need respective social platform key and secret |
| 79 | +- For having verified users, you will need an SMTP server with an email address and password using which system can send emails. The system will send a verification link to an email address. Once an email is verified then, only able to access it. |
| 80 | + > Note: One can always disable the email verification to allow open sign up, which is not recommended for production as anyone can use anyone's email address 😅 |
| 81 | +- For persisting user sessions, you will need Redis URL. If you do not configure a Redis server, sessions will be persisted until the instance is up or not restarted. For better response time on authorization requests/middleware, we recommend deploying Redis on the same infra/network as your authorizer server. |
| 82 | + |
| 83 | +## Integrating into your website |
| 84 | + |
| 85 | +This example demonstrates how you can use [`@authorizerdev/authorizer-js`](/authorizer-js/getting-started) CDN version and have login ready for your site in few seconds. You can also use the ES module version of [`@authorizerdev/authorizer-js`](/authorizer-js/getting-started) or framework-specific versions like [`@authorizerdev/authorizer-react`](/authorizer-react/getting-started) |
| 86 | + |
| 87 | +### Copy the following code in `html` file |
| 88 | + |
| 89 | +> **Note:** Change AUTHORIZER_URL in the below code with your authorizer URL. Also, you can change the logout button component |
| 90 | +
|
| 91 | +```html |
| 92 | +<script src="https://unpkg.com/@authorizerdev/authorizer-js/lib/authorizer.min.js"></script> |
| 93 | + |
| 94 | +<script type="text/javascript"> |
| 95 | + const authorizerRef = new authorizerdev.Authorizer({ |
| 96 | + authorizerURL: `AUTHORIZER_URL`, |
| 97 | + redirectURL: window.location.origin, |
| 98 | + }); |
| 99 | +
|
| 100 | + // use the button selector as per your application |
| 101 | + const logoutBtn = document.getElementById("logout"); |
| 102 | + logoutBtn.addEventListener("click", async function () { |
| 103 | + await authorizerRef.logout(); |
| 104 | + window.location.href = "/"; |
| 105 | + }); |
| 106 | +
|
| 107 | + async function onLoad() { |
| 108 | + const res = await authorizerRef.fingertipLogin(); |
| 109 | + if (res && res.user) { |
| 110 | + // you can use user information here, eg: |
| 111 | + /** |
| 112 | + const userSection = document.getElementById('user'); |
| 113 | + const logoutSection = document.getElementById('logout-section'); |
| 114 | + logoutSection.classList.toggle('hide'); |
| 115 | + userSection.innerHTML = `Welcome, ${res.user.email}`; |
| 116 | + */ |
| 117 | + } |
| 118 | + } |
| 119 | + onLoad(); |
| 120 | +</script> |
| 121 | +``` |
0 commit comments