Commit graph

438 commits

Author SHA1 Message Date
yu-i-i
fcd181e12c Refactor authentication code; add OIDC support 2025-07-22 14:19:11 +02:00
yu-i-i
a0a4a9d518 Enable LDAP and SAML authentication support 2025-07-22 14:19:11 +02:00
Jakob Ackermann
81f0807fc6 [web] prepare filestore migration for Server Pro/CE (#27230)
* [web] prepare filestore migration for Server Pro/CE

* [history-v1] remove unused USER_FILES_BUCKET_NAME env var from script

* [server-ce] tests: write default docker-compose.override.yml on startup

* [server-ce] tests: extend access logging of host-admin for response

* [server-ce] tests: test text and binary file upload

* [server-ce] tests: add tests for filestore migration

* [web] simplify feature gate for filestore/project-history-blobs logic

Co-authored-by: Brian Gough <brian.gough@overleaf.com>

* [server-ce] test: fix flaky test helper

---------

Co-authored-by: Brian Gough <brian.gough@overleaf.com>
GitOrigin-RevId: f89bdab2749e2b7a49d609e2eac6bf621c727966
2025-07-22 08:06:58 +00:00
Antoine Clausse
cf668d897d [web] Create middleware and functions for checks on admin permissions (#27107)
* Create AdminCapabilities in admin-panel module

* Add `adminRolesEnabled` setting

* Use `PermissionsController.requirePermission` in admin-panel routes

* Update `adminCapabilities` to be an array

* Update frontend tests

* Rename `defaultAdminCapabilities` to `fullAdminCapabilities`

Co-authored-by: Jakob Ackermann <jakob.ackermann@overleaf.com>

* Add tests to PermissionsManagerTests.js

* Get admin roles and capabilities from the database

* Add tests to admin-panel

* Fixup PermissionsManagerTests.js without admin-panel module

* Revert "Use `PermissionsController.requirePermission` in admin-panel routes"

This reverts commit ccbf3e3e3bca9239b786c662cba2ac6bd2f4117a.

* Revert "Fixup PermissionsManagerTests.js without admin-panel module"

This reverts commit 6d7ad207bb17c5ca4c12c489d4636a02c608926d.

* Revert "Add tests to PermissionsManagerTests.js"

This reverts commit 8f9cc911750911e1c4b74b631d8c8a1b1ca86630.

* Fix tests after the reverts

* Replace capabilities to more sensible examples ('modify-user-email' and 'view-project')

* Set `adminRolesEnabled: false` for now

* Return `[]` capabilities for non-admins

* Misc: types, test description, settings ordering

* Small refactor of AdminPermissions.mjs:

Reuse code with `getMissingCapabilities`
Throw when `requiredCapabilities` is empty

* Update tests after update

* Rename `checkAdminPermissions` to `hasAdminPermissions`

* Change role permissions to array instead of object

* Remove admin capabilities when `!Settings.adminPrivilegeAvailable`

* Return `[]` if there is no user id

* Throw if `user?._id` is missing

* Update services/web/modules/admin-panel/app/src/AdminPermissions.mjs

Co-authored-by: Jakob Ackermann <jakob.ackermann@overleaf.com>

* Adjust to ForbiddenError constructor syntax

* Give empty capabilities for unknown role, update tests

---------

Co-authored-by: Jakob Ackermann <jakob.ackermann@overleaf.com>
GitOrigin-RevId: 1eec4f6a45e1cc3ae76a3a4603cec1ceba1c2322
2025-07-18 08:06:40 +00:00
Jakob Ackermann
9720413218 [web] add support for pug caching when running E2E tests in dev-env (#27073)
GitOrigin-RevId: bbb53723bd1bc22db5b3d440539f1624a905341f
2025-07-16 08:06:07 +00:00
Eric Mc Sween
b165fea0de Merge pull request #26915 from overleaf/em-jd-increase-max-request-size
Increase web's max JSON request size to 12 MB

GitOrigin-RevId: 91da31e14570e770553049d8376ae1686eba3336
2025-07-10 08:06:55 +00:00
Alf Eaton
58303de9f4 Enable full project search in Community Edition and Server Pro (#25753)
GitOrigin-RevId: 1def9c3e190c907d41b7f822831e12c8609e9c7c
2025-07-03 08:05:52 +00:00
Tim Down
19dc71f414 Merge pull request #26456 from overleaf/td-limit-browser-translate-non-react-icons
Prevent browser translation of icons in Pug pages

GitOrigin-RevId: 97e4d3ba70a4c95bed2c9f52e66038911625613d
2025-06-23 08:05:06 +00:00
David
637312e4f8 Merge pull request #26135 from overleaf/dp-error-logs-ai
Add AI paywall to new error logs

GitOrigin-RevId: 2d6dad11dfe3b27c8ff322a9778a53496cfe7277
2025-06-11 08:06:19 +00:00
Rebeka Dekany
784559f1b8 Add video caption track if captionFile is available (#25997)
GitOrigin-RevId: fefcce66fe573385dfec34cc0f8697220fe418a3
2025-06-06 08:06:06 +00:00
David
db98f5132b Merge pull request #25939 from overleaf/dp-error-logs
Update error logs designs for new editor

GitOrigin-RevId: 0de3a54446a0ff114a1debb7b5f274d3a8f19c42
2025-06-05 08:05:11 +00:00
Mathias Jakobsen
48337b2e2c Merge pull request #25808 from overleaf/mj-ide-full-project-search
[web] Editor redesign: Add full project search

GitOrigin-RevId: b4327c4ba0ddd7387ec8d6640e31200ca0fe4a6e
2025-06-03 08:06:52 +00:00
Antoine Clausse
b667cef262 Revert "Update defaultHighWaterMark to 64KiB (Node 22's default) (#25522)" (#25789)
This reverts commit 19d731abf683066654027de3a4f9ac0b8916f22c.

GitOrigin-RevId: eb7c45ab45e02054601b607a4bfeb432424a1837
2025-05-22 08:07:38 +00:00
Antoine Clausse
aa002369cb Update defaultHighWaterMark to 64KiB (Node 22's default) (#25522)
* Set defaultHighWaterMark to 16KiB

This is already the default in Node 20

* Set defaultHighWaterMark to 64KiB

Per https://github.com/overleaf/internal/pull/25522#issuecomment-2872035192

GitOrigin-RevId: 19d731abf683066654027de3a4f9ac0b8916f22c
2025-05-14 08:05:16 +00:00
Jimmy Domagala-Tang
50c2d8f32f Merge pull request #25405 from overleaf/jdt-wf-rebrand-popover
Writefull Rebranded Features Editor Promotion

GitOrigin-RevId: 49beddbfa44bacf1546543e172dc8edcdb3784bc
2025-05-13 08:06:50 +00:00
Jakob Ackermann
b538d56591 [clsi-cache] backend (#24388)
* [clsi-cache] initial revision of the clsi-cache service

* [clsi] send output files to clsi-cache and import from clsi-cache

* [web] pass editorId to clsi

* [web] clear clsi-cache when clearing clsi cache

* [web] add split-tests for controlling clsi-cache rollout

* [web] populate clsi-cache when cloning/creating project from template

* [clsi-cache] produce less noise when populating cache hits 404

* [clsi-cache] push docker image to AR

* [clsi-cache] push docker image to AR

* [clsi-cache] allow compileGroup in job payload

* [clsi-cache] set X-Zone header from latest endpoint

* [clsi-cache] use method POST for /enqueue endpoint

* [web] populate clsi-cache in zone b with template data

* [clsi-cache] limit number of editors per project/user folder to 10

* [web] clone: populate the clsi-cache unless the TeXLive release changed

* [clsi-cache] keep user folder when clearing cache as anonymous user

* [clsi] download old output.tar.gz when synctex finds empty compile dir

* [web] fix lint

* [clsi-cache] multi-zonal lookup of single build output

* [clsi-cache] add more validation and limits

Co-authored-by: Brian Gough <brian.gough@overleaf.com>

* [clsi] do not include clsi-cache tar-ball in output.zip

* [clsi-cache] fix reference after remaining constant

Co-authored-by: Alf Eaton <alf.eaton@overleaf.com>

* [web] consolidate validation of filename into ClsiCacheHandler

* [clsi-cache] extend metrics and event tracking

- break down most of the clsi metrics by label
  - compile=initial - new compile dir without previous output files
  - compile=recompile - recompile in existing compile dir
  - compile=from-cache - compile using previous clsi-cache
- extend segmentation on compile-result-backend event
  - isInitialCompile=true - found new compile dir at start of request
  - restoredClsiCache=true - restored compile dir from clsi-cache

* [clsi] rename metrics labels for download of clsi-cache

This is in preparation for synctex changes.

* [clsi] use constant for limit of entries in output.tar.gz

Co-authored-by: Eric Mc Sween <eric.mcsween@overleaf.com>

* [clsi-cache] fix cloning of project cache

---------

Co-authored-by: Brian Gough <brian.gough@overleaf.com>
Co-authored-by: Alf Eaton <alf.eaton@overleaf.com>
Co-authored-by: Eric Mc Sween <eric.mcsween@overleaf.com>
GitOrigin-RevId: 4901a65497af13be1549af7f38ceee3188fcf881
2025-04-10 08:05:17 +00:00
Miguel Serrano
d59afb21be Merge pull request #24327 from overleaf/msm-update-max-reconnect-gracefully-interval
[web] Make `maxReconnectGracefullyIntervalMs` configurable

GitOrigin-RevId: 18846b050e76ec86d00bc0dd7e07ab09d552bed7
2025-03-26 09:04:56 +00:00
David
a853a92765 Merge pull request #24350 from overleaf/dp-settings-modal
Implement new editor settings modal options

GitOrigin-RevId: b16358e29f2ebcac6e7f92f1c0196f5911f2e733
2025-03-24 10:49:41 +00:00
Jakob Ackermann
e94473a1ce [web] add support for regex based allow-list for skipping captcha (#24266)
* [web] double down on validating email addresses

* [web] normalize emails in captcha middleware

* [web] add support for regex based allow-list for skipping captcha

* [web] skip captcha for trusted users on all actions

GitOrigin-RevId: a994ebf6b74e80f462d2dab1fe5113bbffa676a9
2025-03-24 10:45:53 +00:00
Tim Down
c5b584e3d8 Merge pull request #24165 from overleaf/lg-td-firefox-78-unsupported
Redirect Firefox 78 and lower to unsupported browser page

GitOrigin-RevId: 1da7379c622b3ae61c3309295c769fe293c0e716
2025-03-18 09:05:21 +00:00
Domagoj Kriskovic
408f6dfee3 Open overleaf assist paywall via event listener (#23958)
* Add overleaf assist paywall modal component in storybook

* update img alt

* remove data-action

* rename assistant -> assist

* use css var for blue color

* Open Overleaf assist paywall if in "overleaf-assist-bundle" split-test

* dont use optional planCode

* Open overleaf assist paywal via event listener

* rename to mainEditorLayoutModals

* call setAssistantUpgraded when modal is shown

* fix merge mistake

* fix lint error

* fix merge differences

GitOrigin-RevId: 0b3162a5c241d4dbe2773ae773c3e35f02c5c492
2025-03-04 09:04:37 +00:00
Alf Eaton
9dee601ba3 Remove AI Error Assistant feedback prompt (#23796)
GitOrigin-RevId: 36ee1ca0befc0f2e4bf817a6946213f814947079
2025-02-26 09:03:52 +00:00
Alf Eaton
2139107f6b Block Safari 14, deprecate Safari 15 (#23740)
GitOrigin-RevId: ef1506bc58982c4fb8286d48137ca9c8557ee1a0
2025-02-24 09:05:27 +00:00
David
46e9c69d8e Merge pull request #23597 from overleaf/dp-integrations-panel
Add integration panel to new editor

GitOrigin-RevId: 85e038c645e40d0ea596ed35d31448caa232e298
2025-02-19 09:05:02 +00:00
Jimmy Domagala-Tang
7f7c2408c8 Merge pull request #23281 from overleaf/jdt-opp-prompts-teardown
Opportunistic prompts teardown

GitOrigin-RevId: ccca9b043dce9abc5719371c3adcdf41ec6510c3
2025-02-04 09:05:25 +00:00
Alf Eaton
f069adaf15 Add full project search UI (#22671)
GitOrigin-RevId: f40c85f40f4c16b4b3c26a197924cd9ac9b3db1f
2025-01-16 09:05:45 +00:00
Miguel Serrano
0e6318ea0c Merge pull request #22265 from overleaf/msm-blob-url-git-bridge-env
[web] Domain override for git blob URLs from `v1_history`

GitOrigin-RevId: 278f91503a54bff43c0a9f0924939ed43d362281
2025-01-10 09:05:52 +00:00
Jimmy Domagala-Tang
ab5a539c62 Merge pull request #22110 from overleaf/jdt-remove-assistant-from-labs
[Web] End Error Assist Labs Experiment

GitOrigin-RevId: 2570c07aea3d6b71dc59792cd2248cb890b415d3
2024-12-06 09:06:32 +00:00
Jakob Ackermann
d19c5e236f Merge pull request #22208 from overleaf/jpa-clsi-hash
[misc] clsi: read files from history-v1 with fallback to filestore

GitOrigin-RevId: c54bb128780198c14e7a63818f39fad62ce65d4e
2024-11-29 09:05:39 +00:00
Jakob Ackermann
9cc6f2a9d5 Merge pull request #21829 from overleaf/jpa-backup-deletion
[history-v1] backup-deletion-app: initial revision

GitOrigin-RevId: 9e05c0e16595cb8d180861ef503c7b4522110d39
2024-11-18 09:05:44 +00:00
Christopher Hoskin
4324c4a089 Merge pull request #21554 from overleaf/ae-delete-spelling
Remove the spelling service

GitOrigin-RevId: ca7c17160e79d84740f32bbe9c73bc74c2714ffc
2024-11-13 09:05:00 +00:00
Mathias Jakobsen
cb72799fff [web] Add toast notifications to editor (#21567)
GitOrigin-RevId: 7f7ab83d4615f564c0e79bc2a05ca6cb9e5239fd
2024-11-11 09:05:12 +00:00
Miguel Serrano
27c2e8b938 Merge pull request #21327 from overleaf/msm-optional-subnet-rate-limiter
[web] Add option to disable subnet rate limiting (+CE/SP Hotfix `5.2.1`)

GitOrigin-RevId: 78d60c9638cede729dd93c3c2421f55b34c0dbfe
2024-10-29 09:05:17 +00:00
Alf Eaton
baed6cc291 Reapply "Remove spell check languages that are only available on the server (#21056)" (#21257)
* Reapply "Remove spell check languages that are only available on the server (#21056)"

This reverts commit a2273a5ff2eeb5660ae992c41e67b7b936dc4e26.

GitOrigin-RevId: 2dfdf87acdf17db894e921fe754c1520df6f01c1
2024-10-23 08:05:14 +00:00
Alf Eaton
508ed8ad1d Merge pull request #21251 from overleaf/ae-revert-no-session
Revert "Remove spell check languages that are only available on the server (#21056)"

GitOrigin-RevId: 6f77aa92f1b7d7181cec7d470c8e6604b1e90fe3
2024-10-22 08:06:45 +00:00
Alf Eaton
04dbb7d2f2 Remove spell check languages that are only available on the server (#21056)
GitOrigin-RevId: cfe10a18af8149327754b3a2e62883c7ebc04bfc
2024-10-22 08:06:20 +00:00
Alf Eaton
978ef6bd92 Enable remaining client-side dictionaries (#21192)
GitOrigin-RevId: da45ae4a93e99a0bb720e09a37c8e291c057cab9
2024-10-18 08:05:29 +00:00
Alf Eaton
d8ce066898 Allow selection of spell-check languages that are only supported in the client-side spell checker (#21053)
GitOrigin-RevId: 3bff6c14ee4c3cbf322c00ac29d23b60d89737bc
2024-10-16 09:35:43 +00:00
Alf Eaton
4f0b860cf6 Use spelling server for Norwegian (#21069)
GitOrigin-RevId: 2188f0e144df60c9aecd4ca728bd186234659645
2024-10-16 08:05:18 +00:00
Mathias Jakobsen
ee2e95ec01 Merge pull request #20987 from overleaf/mj-write-and-cite-settings-icons
[web] Add setting icons to Write and Cite section headers

GitOrigin-RevId: 18e5eefeb1271d17812b83f152e4d464a66185f8
2024-10-14 11:08:09 +00:00
Brian Gough
4a32f49b3d add an option to remove chat from server pro (#20445)
* add option to remove chat from backend

* make chat default to enabled

* Check chat is enabled in chat context

---------

Co-authored-by: mserranom <mserranom@gmail.com>
GitOrigin-RevId: 7dda09df4bb74007eb4b1272d4918155b5cddaf6
2024-10-14 11:07:02 +00:00
Mathias Jakobsen
58b52db56d Merge pull request #20903 from overleaf/mj-load-write-and-cite-with-autocomplete
[web] Load Write and Cite with AutoComplete

GitOrigin-RevId: b496874447b00723410df01a96ea66aa8ec4da3c
2024-10-14 11:05:39 +00:00
M Fahru
16ba4b0ddf Merge pull request #20371 from overleaf/mf-us-gov-banner
[web] Add US gov banner based on inclusion and exclusion criteria

GitOrigin-RevId: c45ed280c8ef2dbdf9f3b84488e767c06fcc1ae1
2024-10-14 11:02:15 +00:00
Alf Eaton
c91d99de80 Allow additional CSP directives to be defined for specific views (#19550)
GitOrigin-RevId: 19bf1004479b5106e64e9c13d58d69e328cc12f1
2024-10-14 11:01:19 +00:00
Alf Eaton
24c8629cd4 Use Hunspell for client-side spellchecking (#20286)
GitOrigin-RevId: c4d0d9e06fe0cc9d7cb7a058fd0768eb024e44f5
2024-10-14 10:58:36 +00:00
Mathias Jakobsen
267109aa9a Merge pull request #20519 from overleaf/mj-write-and-cite-settings
[web] Add a settings menu for Write & Cite

GitOrigin-RevId: 670d8db8fa1363308a6d4d35f3717a886fb24c49
2024-09-25 08:06:34 +00:00
Jakob Ackermann
577497b655 Merge pull request #19842 from overleaf/jpa-ro-mirror-on-client
[misc] add readonly mirror of full project content on the client

GitOrigin-RevId: 940bd93bfd587f83ca383d10fc44579b38fc3e88
2024-08-22 08:05:13 +00:00
Alexandre Bourdin
34e7f3182b Merge pull request #19747 from overleaf/ab-v1-project-import-module
[web] Extract code to v1-projects module

GitOrigin-RevId: 8f8a99891d3a1505aafca08f06fb439d4b596899
2024-08-06 08:05:11 +00:00
Jakob Ackermann
e08b0b3d9e Merge pull request #19686 from overleaf/jpa-fix-ce
[web] sync overleafModuleImports between environments and check in CI

GitOrigin-RevId: c36c41d87d1b6fd687942bca8284a4725bb6c300
2024-08-01 08:04:37 +00:00
Antoine Clausse
5f2718cf29 [web] Make rate-limit on login consistent, prevent "trim/case bypass" (#19555)
* Replace `LoginRateLimiter.processLoginRequest` call by use of `RateLimiterMiddleware`

* Lowercase the email to avoid rate-limit bypass

* Remove unit test "when the users rate limit"

* Use `EmailHelper.parseEmail` to normalize email in `processLoginRequest`

This should address the `trim()` bypass

* Use `.trim().toLowerCase()` instead of `EmailHelper.parseEmail`

We can't use `EmailHelper.parseEmail`, else it breaks the test (and feature): "with username that does not look like an email"

* Add acceptance test for rate limit

* Add comment on rate limits

* Rename `rateLimiter` to `rateLimiterLoginEmail` for clarity

* Make the login rate limits configurable from the settings

GitOrigin-RevId: cf1c3a416745f2b007c85014a5084570d4a049a7
2024-07-30 08:04:26 +00:00