Metadata-Version: 2.1
Name: sawo
Version: 1.2.3
Summary: Sawo Python SDK
Home-page: UNKNOWN
Author: Sawolab
Author-email: tech@sawolabs.com
License: MIT
Description: # Sawo
        
        Passwordless and OTP-less Authentication for your website. [Check the documentaion here.](https://docs.sawolabs.com/sawo/v/0.0.2/)
        
        ## Installing
        
        A step by step series of examples that tell you how to get a development env running. These instructions will let you render the form in your speicified container, and allow you to attach successful login callback for futher actions.
        
        #### Install the sawo package
        
        ```
        pip install sawo
        ```
        #### Import from Sawo createTemplate, getContext and verifyToken method from the sawo package
        
        **The getContext method is used to create sawo dict object from data gain from DB in Django**
        ```python
        from sawo import createTemplate,getContext,verifyToken
        ```
        
        #### API Key
        * Login to sawo [dev console](https://dev.sawolabs.com/)
        * Create a new project
            * Set Project Name
            * Set Project Host
                *  For dev: point to localhost
                *  For prod: point to your domain.
        *  Copy the API key
        
        #### Setup
        Getting started Creating template for sawo passwordless and OTP-less Authentication for your website.
        
        ###### Django
        ```python
            createTemplate("<filepath>")
        
            #example
            createTemplate("templates/partials")
        ```
        ###### Flask
        ```python
            createTemplate("./<filepath>",flask=True)
        
            #example
            createTemplate("./templates/partials",flask=True)
        ```
        
        This will create a _sawo.html file in the filepath provided.
        
        ##### Using _sawo.html in your html files
        
        
        ###### Django
        
        ```html
            {% include "<filepath>/_sawo.html" %}
        
            #example
            {% include "partials/_sawo.html" %}
        ```
        
        ###### Flask
        ```html
            {% include "./<filepath>/_sawo.html" %}
        
            #example
            {% include "./partials/_sawo.html" %}
        ```
        
        
        ##### Sending data required by _sawo.html
        The variable name used in **_sawo.html** template are **sawo.auth_key**, **sawo.identifier** and **sawo.to** so to send that data we create a json.
        
        **Note**
        1. The "to" route should be a post route which can recive posted data
        2. If you dont know how data is passed to templates in Django or Flask, We will suggest looking into it first. 
        
        ###### Django
        ##### Method 1. Sending static data
        
        ```python
            context = {
                    "sawo": {
                        "auth_key" : "<api_key>",
                        "identifier":"email | phone_number_sms",
                        "to":"<route>" #the route where you will recive the payload sent by sdk
                        }
                    }
        
            #exapmple
            context = {
                    "sawo": {
                        "auth_key" : "785ha-hdjsdsd-799-ss345",
                        "identifier":"phone_number_sms",
                        "to":"login" 
                        }
                    }
        ```
        
        ##### Method 2. Using admin and database to save config for sawo
        Step 1. Creating fields for sawo api_key and identifier to set it from admin dashboard
        
        **copy this code in models of your app**
        
        ```python
        class Config(models.Model):
            api_key = models.CharField(max_length=200)
            identifier = models.CharField(max_length=100, choices=[("email","Email"),("phone_number_sms","Phone")])
        ```
        
        Step 2. Setting up view.py of app
        
        **Note: Route should be the reciving end where you can handle post request**
        ```python
        from .models import Config
        from sawo import getContext
        
        def <yourfuntion>(request):
            config = Config.objects.order_by('-api_key')[:1]
            context = {
                "sawo":getContext(config,<route>)  #the route where you will recive the payload sent by sdk 
            }
        
        #example
        def index(request):
            config = Config.objects.order_by('-api_key')[:1]
            context = {
                "sawo":getContext(config,"login")
            }
        ```
        
        ###### Flask
        ```python
            sawo = {
                    "auth_key" : "<api_key>",
                    "identifier":"email | phone_number_sms",
                    "to":"<route>" #the route where you will recive the payload sent by sdk
                }
            
            #exapmple
            sawo = {
                    "auth_key" : "785ha-hdjsdsd-799-ss345",
                    "identifier":"phone_number_sms",
                    "to":"login" 
                }
        ```
        #### Verifying Token
        When he login is done on the webpage it sends the data to backend as payload to verify user you can use verifyToken function , it returns a boolen.
        
        ##### Backend **Code is ame for Django and Flask**
        ```python
            from sawo import verifyToken
            verifyToken()
            #use the methods provided by flask and django to recive data from post request
            #then use this funtion it will return True or False depending on user status
            For Example (The data key pair is an example below, these keys are returned in payload once the user is authenticated from SAWO )
            data  = {
            "user_id" : "a0aca1a0-7460-4e8e-8e46-3baf2c92423d", 
            "verification_token" : "ADdHrvkgi407qNfnAyrIVqokm3OWdKUCdj8y"
                  }
            if(verifyToken(data)):
                #do something
            else:
                #do something else
        ```
        
        ## Tutorials
        
        ###### **Django Tutorial** - [See Tutorial](https://github.com/sawolabs/sawo-python-examples)
        ###### **Flask Tutorial** - [See Tutorial](https://github.com/sawolabs/sawo-python-examples) 
        
        ## Versioning
        We use [SemVer](http://semver.org/) for versioning.
        
        ## Authors
        **SAWO Labs** - [GitHub](https://github.com/sawolabs)
        
        ## License
        
        This project is licensed under the MIT License
        
Platform: UNKNOWN
Description-Content-Type: text/markdown
