Commit Graph

41 Commits

Author SHA1 Message Date
049e477ee9 feat: add refresh_user_cache method and integrate cache refresh in auth flows
Add a new `refresh_user_cache` method to `DataAccessLayer` that re-caches user objects by both ID and username with the configured TTL. Update `basic_auth` and `webdav_auth` handlers to call this method after successful authentication, ensuring the enterprise cache stays synchronized with user lookups from the fallback ORM path.
2025-11-29 11:27:08 +00:00
2d26306352 feat: add enterprise write buffer and data access layer with batched activity and usage record flushing 2025-11-29 11:18:53 +00:00
525784aa6f chore: add token revocation, caching, concurrency, and WebDAV lock modules 2025-11-29 10:17:47 +00:00
acf70b7019 feat: add responsive hamburger navigation menu with slide-in sidebar for mobile views
Implement a mobile-friendly navigation system that replaces the static nav menu with a hamburger toggle button on screens ≤768px. The menu slides in from the left as a fixed overlay panel with smooth CSS transitions, and automatically closes when any nav link is clicked. Includes animated hamburger icon transformation (rotating top/bottom bars, hiding middle bar) and adjusted hero section padding for better mobile layout.
2025-11-16 01:03:16 +00:00
a90a992172 chore: capitalize brand name and update copyright year in base.html template 2025-11-16 00:58:38 +00:00
46e1b8c9eb chore: fix default template directory paths and add missing legal/feature templates
- Update `generate_legal_documents` default `template_dir` from `"templates/legal"` to `"mywebdav/templates/legal"`
- Update `Jinja2Templates` directory from `"templates"` to `"mywebdav/templates"`
- Add new `base.html` template with navigation, footer, and SEO meta tags
- Add new `features.html` template with responsive grid layout and feature cards
- Add new legal document templates: `compliance_statement.html`, `contact_complaint_mechanism.html`, `cookie_policy.html`, `data_portability_deletion_policy.html`
2025-11-16 00:54:58 +00:00
0564809132 feat: migrate legal documents to Jinja2 templates and add splash/features/pricing/support pages 2025-11-16 00:48:39 +00:00
6da46eaffb fix: return proper WebDAV auth challenge headers and text error bodies instead of JSON 2025-11-14 00:59:01 +00:00
a2b5692811 feat: add JWT cookie fallback auth and comprehensive WebDAV test suite
Implement JWT token decoding from cookies as a secondary authentication method in webdav_auth, falling back to Basic Auth then session cookie. Add full test suite (735 lines) covering OPTIONS, PROPFIND, and authorization scenarios for WebDAV endpoints.
2025-11-14 00:54:47 +00:00
6d47bbfa5e chore: replace end_of_day calculation with timedelta-based approach in usage_tracker.py 2025-11-14 00:04:00 +00:00
d6d66cd5fc chore: rebrand README, index.html, and manifest from self-hosted to SaaS terminology 2025-11-13 22:53:05 +00:00
209514bc20 chore: expand README and index.html with SEO metadata and feature descriptions 2025-11-13 22:28:14 +00:00
69f3161eec chore: reformat code style with consistent quotes, trailing commas, and spacing across auth, billing, and models 2025-11-13 22:22:05 +00:00
aac0798305 chore: replace deprecated datetime.utcnow with timezone-aware datetime.now and migrate pydantic v1 Config to model_config 2025-11-13 22:05:26 +00:00
077b11c5aa refactor: replace module-scoped Tortoise fixtures with session-level conftest initialization and pytest_asyncio fixtures
Migrate billing test suite from per-module Tortoise initializer/finalizer fixtures to a shared session-scoped setup in tests/conftest.py, converting all @pytest.fixture async helpers to @pytest_asyncio.fixture and removing the deleted e2e Playwright test directory.
2025-11-13 21:53:40 +00:00
b5c3a0f5d1 feat: add legal documents module with compliance, contact, and cookie policies
Add a comprehensive LegalDocument base class in mywebdav/legal.py with abstract methods for title and content generation, along with full markdown and HTML implementations for compliance statement, contact/complaint mechanism, and cookie policy pages, replacing placeholder content with detailed regulatory and procedural information.
2025-11-13 20:28:53 +00:00
e8d2456701 feat: replace markdown legal links with html pages and add full html templates for all eight policies
Replace all eight footer legal links from .md to .html extensions in mywebdav-app.js and create corresponding HTML documents for privacy policy, data processing agreement, terms of service, cookie policy, security policy, compliance statement, data portability & deletion policy, and contact & complaint mechanism, each with placeholder content and back navigation.
2025-11-13 19:56:41 +00:00
91f3b5c688 chore: rebrand all RBox references to MyWebdav across codebase and docs
Replace every occurrence of "RBox" with "MyWebdav" in source files, configuration,
legal documents, UI components, and test fixtures. This includes renaming the
`RBoxApp` class to `MyWebdavApp` in the JavaScript component, updating the
TOTP issuer from "RBox" to "MyWebdav" in the auth router, changing the
application description in the argument parser, and updating all user-facing
strings in HTML templates, legal policies, and the manifest file. The
`.env.example` default for `TOTP_ISSUER` is also updated accordingly.
2025-11-13 19:50:03 +00:00
9a7a640400 chore: rename all project references from rbox to mywebdav across configs, code, and docs 2025-11-13 19:42:43 +00:00
b4a96fa82f feat: wrap login view in centered container with legal footer and cookie consent
Add .login-container CSS class with flex centering and gradient background, move gradient from .auth-container to new class, and update rbox-app.js showLogin() to render login-view inside a div.login-container alongside a footer with legal links and a cookie-consent element.
2025-11-13 18:33:17 +00:00
1f3ffc221f chore: remove billing references and commercial wording from README.md
- Replace "commercial" with "self-hosted" in project description
- Remove Stripe billing integration from admin features list
- Remove Stripe payment credentials from environment variables section
2025-11-13 11:32:37 +00:00
ba0d3350be feat: add legal compliance documents, cookie policy, privacy policy, terms of service, and CodeMirror editor library
Add placeholder legal documents for compliance statement, contact/complaint mechanism, data portability/deletion policy, data processing agreement, security policy, and full implementations for cookie policy, privacy policy, and terms of service. Include CodeMirror 6 editor bundle with basic extensions (line numbers, syntax highlighting, autocompletion, bracket matching, undo history, search, linting) and minified CSS for legacy editor styling.
2025-11-13 11:14:22 +00:00
d91246967c chore: rebrand all user-facing strings from RBox to MyWebdav across docs, emails, and config
Replace every occurrence of "RBox" with "MyWebdav" in README.md, invoice templates, welcome emails, share notifications, FastAPI metadata, default database filename, domain name, S3 bucket name, TOTP issuer, and WebDAV realm header to reflect the commercial rebranding of the application.
2025-11-13 11:05:05 +00:00
df964a7fb1 feat: add user data export, account deletion, cookie consent, footer, and admin e2e tests 2025-11-13 10:47:50 +00:00
bff5742ced fix: guard initial file load in search mode and discard stale search results
Add a check in FileList.connectedCallback to skip loading all files when
data-search-mode attribute is present, preventing empty result sets from
overwriting search results on partial matches. Introduce a monotonically
increasing search ID counter in RBoxApp to discard responses from outdated
search requests, ensuring only the latest query result is rendered and
stale error messages are suppressed.
2025-11-12 04:05:48 +00:00
987dd33a8c refactor: replace hardcoded CSS values with CSS custom properties and add shared-items container styles 2025-11-12 03:48:43 +00:00
43acded96e feat: add aiosmtplib and stripe dependencies, restructure code editor overlay layout and add empty state icon 2025-11-11 16:57:45 +00:00
decea66307 fix: handle SMTP_USE_TLS flag and suppress redundant STARTTLS errors in EmailService 2025-11-11 14:30:31 +00:00
cd7014df8b chore: rename SMTP_SERVER to SMTP_HOST and SMTP_FROM_EMAIL to SMTP_SENDER_EMAIL in settings and mail service 2025-11-11 14:20:14 +00:00
299fb30387 feat: add email invitation support for share links with STARTTLS fallback for SMTP 2025-11-11 14:06:02 +00:00
82a57f9835 feat: add async email service with SMTP queue and invoice/welcome email triggers
Implement a new `rbox/mail.py` module providing an async email service using `aiosmtplib`, including a background worker queue for non-blocking email dispatch. Integrate the service into the application lifespan (start/stop) and add email sending in three places: welcome email on user registration in `routers/auth.py`, invoice email with line-item details in `billing/invoice_generator.py`, and a test-email admin endpoint in `routers/admin.py`. Add `aiosmtplib==5.0.0` to `requirements.txt`.
2025-11-11 11:47:26 +00:00
eb75c1114f chore: add png and sqlite patterns to gitignore and introduce e2e billing test suite 2025-11-11 00:06:10 +00:00
76ccf48628 feat: add database indexes, stripe api key lazy init, and usage query date range fix
Add composite index on usage_records for user_id, record_type, and timestamp columns; add individual indexes on record_type, timestamp, period_start, and status fields in billing models. Implement lazy Stripe API key initialization via _ensure_api_key method called before each Stripe operation. Fix monthly usage query to use date range filtering instead of year/month decomposition. Refactor auth login endpoint to replace OAuth2PasswordRequestForm dependency with custom LoginRequest model. Add error handling wrapper around current usage endpoint and introduce loading/error CSS classes for billing UI. Convert code editor view from absolute positioning to fixed overlay with centered modal container. Include Stripe.js script tag in index.html and add new APIContract class for response validation against schemas.
2025-11-11 00:05:13 +00:00
e0517e4300 fix: replace sequential upload with parallel promise-based upload and auto-remove completed items after 500ms delay 2025-11-10 16:59:40 +00:00
f59cbf56dc fix: correct typo in commit message from "UPate" to "Update" 2025-11-10 14:50:19 +00:00
938daea231 feat: add billing module with usage tracking, invoice generation, and stripe integration 2025-11-10 14:46:40 +00:00
c140eee47f feat: add 2fa support, starred items, batch operations, and logging infrastructure
- Implement two-factor authentication with TOTP verification, recovery codes, and QR code setup in auth flow
- Add is_starred and last_accessed_at fields to File and Folder models for bookmarking and recency tracking
- Introduce batch operation endpoints for files and folders (delete, star, unstar, move, copy)
- Configure structured logging with timestamps and module names, replacing print statements
- Register admin and starred routers, add global HTTPException handler with JSON error responses
- Update authenticate_user and create_access_token to handle 2FA verification and token claims
2025-11-10 00:58:41 +00:00
6b01dc3fa3 feat: add admin CRUD endpoints for user management and frontend dashboard component 2025-11-10 00:56:44 +00:00
7c908018f6 fix: correct typo in user authentication error message for invalid credentials 2025-11-09 23:28:56 +00:00
5df31bd119 chore: switch docker-compose to docker compose and add network_mode host to services 2025-11-09 23:28:48 +00:00
55ea78e534 chore: add initial project scaffolding with Docker, nginx, and core app modules 2025-11-09 22:29:07 +00:00