mirror of
https://github.com/wassname/Open-Assistant.git
synced 2026-07-01 16:50:12 +08:00
652b7bff04
* Initial code for backend auth * Remove outdated check * Initial separation of AuthenticatedUser * AuthenticatedUser -> Account * Rework for Account * Initial code for Discord OAuth * Remove now redundant methods * Remove incorrect response model, add requests dep for backend * Create Settings fields for Discord values * Cleanup get account from Discord function * Cleanup * Cleanup * Generate alembic upgrade script * Remove unused error codes * Update alembic script to correct down revision * Use aiohttp over requests * Update alembic script to latest down revision
38 lines
1.0 KiB
Python
38 lines
1.0 KiB
Python
from datetime import datetime, timedelta
|
|
from typing import Optional
|
|
|
|
from jose import jwt
|
|
from oasst_backend.config import Settings
|
|
from oasst_backend.models import Account
|
|
from sqlmodel import Session
|
|
|
|
|
|
def create_access_token(data: dict) -> str:
|
|
"""
|
|
Create an encoded JSON Web Token (JWT) using the given data.
|
|
"""
|
|
|
|
expires_delta = timedelta(minutes=Settings.AUTH_ACCESS_TOKEN_EXPIRE_MINUTES)
|
|
to_encode = data.copy()
|
|
expire = datetime.utcnow() + expires_delta
|
|
to_encode.update({"exp": expire})
|
|
encoded_jwt = jwt.encode(to_encode, Settings.AUTH_SECRET, algorithm=Settings.AUTH_ALGORITHM)
|
|
return encoded_jwt
|
|
|
|
|
|
def get_account_from_discord_id(db: Session, discord_id: str) -> Optional[Account]:
|
|
"""
|
|
Get the Open-Assistant Account associated with the given Discord ID.
|
|
"""
|
|
|
|
account: Account = (
|
|
db.query(Account)
|
|
.filter(
|
|
Account.provider == "discord",
|
|
Account.provider_account_id == discord_id,
|
|
)
|
|
.first()
|
|
)
|
|
|
|
return account
|