Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 11 additions & 4 deletions backend/app/api/routes/login.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,20 +6,27 @@
from typing import Annotated, Any

import requests
from fastapi import APIRouter, Depends, HTTPException
from fastapi.responses import HTMLResponse
from fastapi.security import OAuth2PasswordRequestForm

from app import mixpanel, security, users
from app.api.deps import CurrentUser, SessionDep, get_current_active_superuser
from app.config import settings
from app.github import token_resp_text_to_dict
from app.messaging import generate_reset_password_email, send_email
from app.models import Message, NewPassword, Token, UserCreate, UserPublic
from app.models import (
Message,
NewPassword,
Token,
UserCreate,
UserPublic,
)
from app.security import (
generate_password_reset_token,
get_password_hash,
verify_password_reset_token,
)
from fastapi import APIRouter, Depends, HTTPException
from fastapi.responses import HTMLResponse
from fastapi.security import OAuth2PasswordRequestForm

logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
Expand Down
2 changes: 2 additions & 0 deletions backend/app/api/routes/users.py
Original file line number Diff line number Diff line change
Expand Up @@ -591,5 +591,7 @@ def get_user_storage(
current_user: CurrentUser,
) -> StorageUsage:
used = get_storage_usage(owner_name=current_user.account.name)
if current_user.subscription is None:
raise HTTPException(404, "User does not have a subscription")
limit = current_user.subscription.storage_limit
return StorageUsage(limit_gb=limit, used_gb=used)
17 changes: 12 additions & 5 deletions backend/app/users.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
User,
UserCreate,
UserGitHubToken,
UserSubscription,
UserUpdate,
UserZenodoToken,
)
Expand All @@ -38,20 +39,26 @@ def create_user(*, session: Session, user_create: UserCreate) -> User:
account_name = user_create.account_name or user_create.github_username
if account_name in INVALID_ACCOUNT_NAMES:
raise HTTPException(422, "Invalid account name")
db_obj = User.model_validate(
user = User.model_validate(
user_create,
update={
"hashed_password": get_password_hash(user_create.password),
"account": Account(
name=account_name,
github_name=user_create.github_username,
),
), # type: ignore
},
)
session.add(db_obj)
# Give the user a free subscription by default
user.subscription = UserSubscription(
period_months=1,
plan_id=0,
price=0.0,
) # type: ignore
session.add(user)
session.commit()
session.refresh(db_obj)
return db_obj
session.refresh(user)
return user


def update_user(
Expand Down