Skip to main content

oauth2.0 stlock

Project description

Библиотека Python stlock

Быстрый старт

Пример с библиотекой FastAPI

pip install stlock
pip install fastapi
pip install uvicorn

app.py:

from fastapi import FastAPI, HTTPException, Body, Query
from stlock import AuthClient


# создание экземпляра класса
AC = AuthClient(client_id="client",  # id клиента
    client_secret="secret",  # secret клиента
    code_redirect_uri="http://localhost:8000/code",  # ссылка перенаправления запроса с кодом
    service_endpoint="https://bba6q6chdp0eatf6n0ms.containers.yandexcloud.net",  # ссылка на сервис авторизации
    )


app = FastAPI()


# Регистрация пользователя
@app.post("/register", status_code=201)
def register_user(username=Body(...), password=Body(...)):
   data, status_code = AC.register(username, password)
   if status_code >= 400:
       raise HTTPException(status_code, data["detail"])
   return data


#Авторизация пользователя
@app.post('/login')
def login(username: str = Body(...), password: str = Body(...)):
   data, status_code = AC.authorize_user(username, password)
   if status_code >= 400:
       raise HTTPException(status_code, data["detail"])
   return data


@app.get('/code')
def getcode(code=Query(None)):
   data, status_code = AC.get_tokens(code)
   if status_code >= 400:
       raise HTTPException(status_code, data["detail"])
   return data

Для запуска сервера:

uvicorn app.py:app

Описание методов:

AC.register(username, password)

Создаёт нового пользователя в базе данных

AC.authorize_user(username, password)

Авторизирует запрос на логин пользователя, перенаправляет на страницу с кодом в query запросе

AC.get_tokens(code)

Выдаёт токены пользователя (access, refresh)

AC.decode(token)

Декодирует токен, возвращает словарь с данными о пользователе

AC.do_refresh(token)

Обменивает refresh token на новый access и refresh токены

примеры запросов :

создание пользователя:

POST http://localhost:8000/register
Body {
    "username": "user1",
    "password": "Password123!"
}

Output:

{
    "detail": "User registred"
}

авторизация пользователя:

POST http://localhost:8000/login
Body {
    "username": "user1",
    "password": "Password123!"
}

Output:

{
    "access_token": "eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJjbGllbnQiLCJleHAiOjE2ODQ3ODUwMTUsInN1YiI6ImQ5YjBmYjE1LWJjYmQtNDNkNy1hMDdlLTAxNTIwMjBlZWI2ZiIsInJvbGUiOiJUZXN0In0.kOjADrKuTmLW-MGei4VEhf9Ce16eEzgle0UVB-t_vXoMQAtMQVzdI6iK14Rmds2w1bUMh82Wwru_AmMYS2NYYQ",
    "expires_in": 60,
    "refresh_token": "ZDI5ZMUZNDETNZYYZI01OTUZLTK5MZKTNJVLMDU1OTA5MDFM",
    "token_type": "Bearer"
}

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

stlock-0.0.6.tar.gz (3.0 kB view details)

Uploaded Source

File details

Details for the file stlock-0.0.6.tar.gz.

File metadata

  • Download URL: stlock-0.0.6.tar.gz
  • Upload date:
  • Size: 3.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.16

File hashes

Hashes for stlock-0.0.6.tar.gz
Algorithm Hash digest
SHA256 e1980ae2b4d01e38d20b4eef5d5d51c2a574cf06edc28ae2a98bf6626164d238
MD5 f95c9fd033c90b780a370b8daf7f62f9
BLAKE2b-256 49aa29090a6b797e544b455fd4273e6e8325fb0e74945fa6744f73afc9d42791

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page