Commit Graph
360 Commits
Author SHA1 Message Date
Artyom SavchenkoandGitHub 5e03566ea2 Fix account info disclosure (#10874)
* Fix account info disclosure

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* Fix translations

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* Clean up

Signed-off-by: Artem Savchenko <armisav@gmail.com>

---------

Signed-off-by: Artem Savchenko <armisav@gmail.com>
2026-06-19 13:09:46 +07:00
Artyom SavchenkoGitHubCopilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
e3d3276451 feat: Ability to skip initial content creation (#10812)
* feat: Configure workspaces during creation

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* Fix question description

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* Clean up

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* Fix formatting

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* Fix tests

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* Fix tests

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* Potential fix for pull request finding 'CodeQL / Insecure randomness'

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
Signed-off-by: Artyom Savchenko <armisav@gmail.com>

* Revert "Potential fix for pull request finding 'CodeQL / Insecure randomness'"

This reverts commit e37b6de69c.

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* Simplify workspace creation

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* Fix layout

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* Clean up

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* Keep redesigned version

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* Fix tests

Signed-off-by: Artem Savchenko <armisav@gmail.com>

---------

Signed-off-by: Artem Savchenko <armisav@gmail.com>
Signed-off-by: Artyom Savchenko <armisav@gmail.com>
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
2026-05-22 18:58:10 +07:00
Artyom SavchenkoandGitHub a78630fa4d Fix invite workflow (#10861)
Signed-off-by: Artem Savchenko <armisav@gmail.com>
2026-05-20 13:08:56 +05:00
Denis BykhovandGitHub 32858aff1b fix: throw Forbidden if user is not workspace member in checkJoin (#10869)
Signed-off-by: Denis Bykhov <bykhov.denis@gmail.com>
2026-05-20 03:33:42 +05:00
Denis BykhovandGitHub 897c4a08d9 allow disabling password aging rule (#10867)
Signed-off-by: Denis Bykhov <bykhov.denis@gmail.com>
2026-05-20 02:50:35 +05:00
Denis BykhovandGitHub 4ef554b9d2 Two-Factor Authentication (2FA) (#10658)
* Two-Factor Authentication (2FA)

Signed-off-by: Denis Bykhov <bykhov.denis@gmail.com>

* Fix test

Signed-off-by: Denis Bykhov <bykhov.denis@gmail.com>

* Fix test

Signed-off-by: Denis Bykhov <bykhov.denis@gmail.com>

* Fix tests

Signed-off-by: Denis Bykhov <bykhov.denis@gmail.com>

* More test fixes

Signed-off-by: Denis Bykhov <bykhov.denis@gmail.com>

* Fix tests

Signed-off-by: Denis Bykhov <bykhov.denis@gmail.com>

---------

Signed-off-by: Denis Bykhov <bykhov.denis@gmail.com>
2026-03-21 14:36:32 +07:00
f44d88e134 feat(password): email-confirmed password setup for SSO accounts (#10649)
* feat(password): add email-confirmed password setup for SSO accounts

SSO-only accounts (Google, GitHub, OIDC) now have a secure path to add
a password credential without requiring direct session trust.

**Problem:** Previously, password setup for SSO users either required an
existing password (blocking SSO-only users entirely) or would have needed
to trust the session token alone to create a persistent credential — a
security gap where a compromised session could silently add a password.

**Solution:** Email-confirmed flow that reuses the existing recovery
infrastructure:

1. `checkHasPassword` RPC — authenticates via session token, returns
   whether the account has a password hash set (drives UI branching).
2. `requestPasswordSetup` RPC — authenticates via session token, looks up
   the account's verified email social ID, generates a recovery token
   (`restoreEmail` claim), and sends a "Password recovery" email via the
   existing mail service. No DB schema changes.
3. `PasswordRestore.svelte` (unchanged) handles the link click → calls
   the existing `restorePassword` RPC → password is set.

**UI changes** (`Password.svelte`):
- `hasPassword === false` → "Set a password" panel with description and
  "Send setup link" button
- On success → "Check your email for a link to set your password."
- On `SocialIdNotFound` → "No email address is linked to your account."
  with guidance to add one via Account Settings → Manage Identities
- `hasPassword === true` → existing "Change password" form (unchanged)

**Account client:** Added `checkHasPassword()` and
`requestPasswordSetup()` methods to `AccountClientImpl`; both registered
as platform resource functions (`login.function.CheckHasPassword` /
`login.function.RequestPasswordSetup`).

Signed-off-by: Don Kendall <dkendall@ledoweb.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: Don Kendall <kendall@donkendall.com>

* test(password): add unit tests for SSO password setup RPCs

ssoPassword.test.ts — 12 tests covering:
- checkHasPassword: returns true/false for hash+salt presence, false for
  partial state (hash-only or salt-only), error for missing account
- changePassword: rejects empty old/new passwords, rejects wrong
  oldPassword (hash mismatch)
- requestPasswordSetup: sends email when email social ID exists, returns
  SocialIdNotFound when no email is linked, handles mail service failures
  gracefully (logs error, does not rethrow)

signupTokenGuard.test.ts — added edge-case for empty-string token to
document current guard behaviour (token != null passes empty string
through; noted as a future hardening opportunity).

Signed-off-by: Don Kendall <dkendall@ledoweb.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: Don Kendall <kendall@donkendall.com>

* chore(dev): add dev-local webpack proxy for local Docker compose stack

Adds a `dev-local` CLIENT_TYPE that proxies webpack dev server requests
to a local Docker compose stack (nginx at localhost:8088), following the
same pattern as the existing `dev-server`, `dev-huly`, etc. modes.

Useful for developing frontend changes against a fully running local
backend without needing `huly.local` DNS configuration.

Signed-off-by: Don Kendall <dkendall@ledoweb.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: Don Kendall <kendall@donkendall.com>

* feat(email): redesign transactional emails with proper HTML and dedicated password setup template

All account service email templates were bare <p> tags with no styling,
branding, or call-to-action buttons. Replaced with production-quality
HTML emails using email-safe table layout and inline CSS.

Design: Huly wordmark on dark (#18181B) header, white card body, dark
CTA button, subtle border, system font stack. Plain-text versions
updated to match for clients that prefer text.

Templates improved:
- RecoveryHTML/Text — password reset flow
- ConfirmationHTML/Text — email verification on signup
- InviteHTML/Text — workspace invitation
- ResendInviteHTML/Text — re-invitation
- OtpHTML/Text — sign-in code with large monospace code display

New dedicated template for SSO password setup (PasswordSetupHTML/Text/
Subject) so the setup email has copy distinct from forgot-password
recovery. requestPasswordSetup now uses these instead of RecoveryHTML.
Subject: "Set a password for your Huly account".

Other language files updated with the new PasswordSetup* keys
(English copy as fallback — translations can follow separately).

Signed-off-by: Don Kendall <dkendall@ledoweb.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: Don Kendall <kendall@donkendall.com>

* fix(password): guard requestPasswordSetup against accounts with existing password

Add server-side check that rejects requestPasswordSetup calls from accounts
that already have a password hash+salt. The setup flow bypasses the
old-password requirement in changePassword, so it must be restricted to
SSO-only accounts. The UI already guards this branch but defence-in-depth
requires the server to enforce it independently.

Also adds JSDoc to requestPasswordSetup and extends unit test coverage:
- TokenError path for checkHasPassword (invalid/expired token)
- BadRequest guard for requestPasswordSetup on password-bearing accounts

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: Don Kendall <kendall@donkendall.com>

* fix: add missing locale keys and fix eslint/formatting for CI

- Add 5 missing SSO password translation keys to all non-en locale files
  (SetPassword, SSOPasswordDescription, SendSetupLink, SSOPasswordEmailSent,
  SSONoEmailLinked) to fix locale parity test
- Replace non-null assertions with type casts in ssoPassword.test.ts
  to fix @typescript-eslint/no-non-null-assertion errors
- Revert unrelated tracker/github cosmetic changes that triggered
  pre-existing eslint errors in those packages

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Don Kendall <kendall@donkendall.com>

* fix: address review — remove dev/prod changes, translate PasswordSetup strings

- Revert dev/prod/webpack.config.js and package.json (per BykhovDenis)
- Translate PasswordSetupText and PasswordSetupSubject for all 10 locales
  (cs, de, es, fr, it, pt-br, pt, ru, tr, zh)
- PasswordSetupHTML stays in English (reviewer approved)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Don Kendall <kendall@donkendall.com>

---------

Signed-off-by: Don Kendall <dkendall@ledoweb.com>
Signed-off-by: Don Kendall <kendall@donkendall.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-21 03:53:18 +05:00
fa03d2b616 fix(account): handle single-word names in OIDC and GitHub auth providers (#10631) (#10656)
When a user's name has no spaces (common for CJK names like "西门吹雪"),
name.split(' ') returns a single-element array so the last name
destructures as undefined, causing a PostgreSQL NOT NULL constraint
violation on the last_name column.

- openid: prefer standard OIDC given_name/family_name claims when
  available, fall back to splitting name with safe slice(1).join()
- github: same split fix using displayName ?? username
- loginOrSignUpWithProvider: add ?? '' defensive fallback at insertOne
  to guard against any undefined last name reaching the DB

Fixes #10628

Signed-off-by: SaiVaraprasad Medapati <varaprasadreddy9676@gmail.com>
Co-authored-by: SaiVaraprasad Medapati <varaprasadreddy9676@gmail.com>
2026-03-19 16:51:34 +07:00
Artyom SavchenkoandGitHub d7a0fa8309 Do not allow kick last owner (#10559)
Signed-off-by: Artem Savchenko <armisav@gmail.com>
2026-02-26 14:55:17 +05:00
Yulian DiazandGitHub 66deebdf4e fix(account): handle empty $in array to prevent PostgreSQL IN () syntax error (#10554)
* fix(account): handle empty array in $in SQL clause to prevent PostgreSQL syntax error

buildWhereClause now emits FALSE for empty $in arrays instead of invalid
IN () syntax. Also adds an early return in getWorkspacesInfoWithStatusByIds
so callers like the GitHub/Gmail/Backup services never hit the query with
an empty uuid list.

Fixes #10553

Signed-off-by: Yulian Diaz <5605867+spatialy@users.noreply.github.com>

* fix(account): also guard against non-array uuids in getWorkspacesInfoWithStatusByIds

Per review feedback from @ArtyomSavchenko: use Array.isArray() in addition to
the length check to handle runtime cases where uuids may not be an array.

Signed-off-by: Yulian Diaz <5605867+spatialy@users.noreply.github.com>

---------

Signed-off-by: Yulian Diaz <5605867+spatialy@users.noreply.github.com>
2026-02-25 22:56:57 +07:00
Artyom SavchenkoandGitHub bb54748716 feat: Redesign workspace join (#10507)
* Redesign workspace join

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* Login rename

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* Fix UI tests

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* Fix unstable tests

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* Minor fixes

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* Clean up

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* Fix translations

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* Redesign join

Signed-off-by: Artem Savchenko <armisav@gmail.com>

---------

Signed-off-by: Artem Savchenko <armisav@gmail.com>
2026-02-16 16:07:18 +07:00
Artyom SavchenkoandGitHub c6529c36d4 Do not use the error logging level for expected situations (#10474)
* Do not use the error logging level for expected situations

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* Fix tests

Signed-off-by: Artem Savchenko <armisav@gmail.com>

---------

Signed-off-by: Artem Savchenko <armisav@gmail.com>
2026-02-03 10:58:25 +07:00
Alexander OnnikovandGitHub a0252ab2fe fix: do not write analytics event when no token (#10463)
Signed-off-by: Alexander Onnikov <Alexander.Onnikov@xored.com>
2026-01-30 12:55:58 +07:00
Alexander OnnikovandGitHub 1fb53b9115 fix: mute account unauthorized error (#10461) 2026-01-30 09:49:12 +07:00
Artyom SavchenkoandGitHub 33acb80a29 Allow to get person info in export (#10368)
Signed-off-by: Artem Savchenko <armisav@gmail.com>
2026-01-06 12:49:15 +07:00
c8aec52f13 Postgress support (#10331)
* Pure PostgreSQL

Signed-off-by: Andrey Sobolev <haiodo@gmail.com>

* Fix formatting

* Optimize a tests

+ Optimize a stream docker build

* Fix migrations

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* Fix datalake image

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* Fix formatting

Signed-off-by: Artem Savchenko <armisav@gmail.com>

---------

Signed-off-by: Andrey Sobolev <haiodo@gmail.com>
Signed-off-by: Artem Savchenko <armisav@gmail.com>
Co-authored-by: Andrey Sobolev <haiodo@gmail.com>
2025-12-26 12:11:38 +07:00
a5af7fdd6a Configure permissions to import documents (#10310)
* fix: redesign and compact

Signed-off-by: Leonid Kaganov <lleo@lleo.me>

* fix: comments

Signed-off-by: Leonid Kaganov <lleo@lleo.me>

* fix: correctly dropping connections in timeout

Signed-off-by: Leonid Kaganov <lleo@lleo.me>

* feature: loglevel in config

Signed-off-by: Leonid Kaganov <lleo@lleo.me>

* fix: loglevel in config

Signed-off-by: Leonid Kaganov <lleo@lleo.me>

* features lopt: direct personal messages between websockets by username

Signed-off-by: Leonid Kaganov <lleo@lleo.me>

* fix collaborator security query

Signed-off-by: Alexander Onnikov <Alexander.Onnikov@xored.com>

* Fix svelte warnings

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* Change log

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* Add export permissions

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* Add workspace permissions enum

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* Add changelog

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* Update account enum

Signed-off-by: Artem Savchenko <armisav@gmail.com>

---------

Signed-off-by: Leonid Kaganov <lleo@lleo.me>
Signed-off-by: Alexander Onnikov <Alexander.Onnikov@xored.com>
Signed-off-by: Artem Savchenko <armisav@gmail.com>
Co-authored-by: Leonid Kaganov <lleo@lleo.me>
Co-authored-by: Alexander Onnikov <Alexander.Onnikov@xored.com>
2025-12-18 22:22:58 +07:00
Denis BykhovandGitHub a4055d8a0e Password aging fix (#10287)
Signed-off-by: Denis Bykhov <bykhov.denis@gmail.com>
2025-12-10 19:03:45 +05:00
Denis Bykhov 210d70cf55 Fix formatting
Signed-off-by: Denis Bykhov <bykhov.denis@gmail.com>
2025-11-27 00:50:38 +05:00
Denis Bykhov d5d5b4028f Add password aging
Signed-off-by: Denis Bykhov <bykhov.denis@gmail.com>
2025-11-27 00:01:53 +05:00
Artyom SavchenkoandGitHub a6c964a830 Do not spam with expected invite errors (#10241)
Signed-off-by: Artem Savchenko <armisav@gmail.com>
2025-11-22 17:24:05 +07:00
Alexey ZinovievandGitHub 02fa0f4419 eqms-1401: track password changed events (#10217)
Signed-off-by: Alexey Zinoviev <alexey.zinoviev@xored.com>
2025-11-17 12:09:49 +07:00
Alexey ZinovievandGitHub 7d1ab03db9 EQMS-1402: limit password login max attempts (#10184)
Signed-off-by: Alexey Zinoviev <alexey.zinoviev@xored.com>
2025-11-01 09:52:59 +04:00
Alexander OnnikovandGitHub 621a61da22 add usage info to workspace status (#10172)
Signed-off-by: Alexander Onnikov <Alexander.Onnikov@xored.com>
2025-10-30 19:40:20 +07:00
Alexey ZinovievandGitHub df50eab941 Subscriptions (#10114) 2025-10-30 10:45:20 +07:00
Andrey SobolevandGitHub ffd8d90378 Support for rating system (#10124)
Signed-off-by: Andrey Sobolev <haiodo@gmail.com>
2025-10-24 10:10:01 +07:00
Alexey ZinovievandGitHub b86b3e46f3 UBERF-13891: global user profile (#10102)
Signed-off-by: Alexey Zinoviev <alexey.zinoviev@xored.com>
2025-10-16 16:15:38 +04:00
Artyom SavchenkoandGitHub 35cd8a3d86 Fix admin integrations (#10076)
* Get your own integrations for admin

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* Remove admin check

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* Clean up

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* Allow to add social id by admin

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* Use service token for integrations test

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* Update version

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* Fix tokens

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* Update allowed services

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* Use workspace service

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* Fix service client

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* Get rid of admin service name

Signed-off-by: Artem Savchenko <armisav@gmail.com>

---------

Signed-off-by: Artem Savchenko <armisav@gmail.com>
2025-10-14 17:01:10 +07:00
Alexey ZinovievandGitHub 256b2c3064 Qfix: add ai-assitant to list of allowed integration services (#10052)
Signed-off-by: Alexey Zinoviev <alexey.zinoviev@xored.com>
2025-10-08 17:45:34 +04:00
Alexey ZinovievandGitHub b7c5e2bee5 uberf-13874: generate token for ai assistant (#10038) 2025-10-07 10:25:09 +07:00
Artyom SavchenkoandGitHub 80412d9813 Update local time (#10019)
Signed-off-by: Artem Savchenko <armisav@gmail.com>
2025-10-03 13:06:10 +04:00
Alexey ZinovievandGitHub 550f1a59a5 UBERF-13692: Adjut merge contacts to global accounts (#9911) 2025-09-22 22:25:09 +07:00
Alexey ZinovievandGitHub 033a1ce537 eqms-1618: fix server branding (#9907)
Signed-off-by: Alexey Zinoviev <alexey.zinoviev@xored.com>
2025-09-22 17:24:02 +07:00
Alexey ZinovievandGitHub d0a42d63ec UBERF-13587: Huly secretary integration (#9861)
Signed-off-by: Alexey Zinoviev <alexey.zinoviev@xored.com>
2025-09-17 16:23:35 +04:00
Denis BykhovandGitHub 601d4a3102 Disable email mask (#9862)
Signed-off-by: Denis Bykhov <bykhov.denis@gmail.com>
2025-09-15 21:05:58 +05:00
Alexey ZinovievandGitHub c0fa4b7299 UBERF-13511: Support guest tokens with open account (#9834)
Signed-off-by: Alexey Zinoviev <alexey.zinoviev@xored.com>
2025-09-11 22:49:33 +07:00
Alexey ZinovievandGitHub 443856f58f UBERF-13510: Card space public link (#9804)
Signed-off-by: Alexey Zinoviev <alexey.zinoviev@xored.com>
2025-09-09 13:32:17 +07:00
Alexey ZinovievandGitHub f81576c1f2 uberf-13507: support space membership via token claim (#9786)
Signed-off-by: Alexey Zinoviev <alexey.zinoviev@xored.com>
2025-09-05 17:22:12 +07:00
Alexey ZinovievandGitHub 00e7f1310a UBERF-13383: Guest access token (#9747)
Signed-off-by: Alexey Zinoviev <alexey.zinoviev@xored.com>
2025-09-01 15:07:22 +07:00
Artyom SavchenkoGitHubCopilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>CopilotCopilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
1316a8475a UBERF-13120: Support SMTP mail for different accounts (#9674)
* UBERF-13120: Support SMTP mail for different accounts

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* Potential fix for code scanning alert no. 219: Use of password hash with insufficient computational effort

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
Signed-off-by: Artyom Savchenko <armisav@gmail.com>

* Update server/account/src/operations.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Signed-off-by: Artyom Savchenko <armisav@gmail.com>

* UBERF-13120: Minor fixes

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-13120: Fix get secret

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-13120: Fix lru cache version

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-13120: Fix pod-mail

Signed-off-by: Artem Savchenko <armisav@gmail.com>

---------

Signed-off-by: Artem Savchenko <armisav@gmail.com>
Signed-off-by: Artyom Savchenko <armisav@gmail.com>
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-08-14 11:28:36 +07:00
0218c5d1ab UBERF-13118: Send emails from Huly mail threads (#9669)
Signed-off-by: Artem Savchenko <armisav@gmail.com>
Signed-off-by: Artyom Savchenko <armisav@gmail.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-08-13 11:24:40 +07:00
Artyom SavchenkoandGitHub fa0a0b6709 Add account method to get full social ids by person ids (#9654)
Signed-off-by: Artem Savchenko <armisav@gmail.com>
2025-08-08 16:07:56 +07:00
Artyom SavchenkoandGitHub 7e92c12073 UBERF-11414: Integrations (#9610)
* UBERF-11414: Use common integration kind

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-11414: Allow multiple gmail

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-11414: Merge with develop

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-11414: Refactor integration kinds

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-11414: Add integrations package

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-11414: Integrations

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-11414: Integration state and config

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-11414: Add integration events

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-11414: Refresh integration states

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-11414: Rename to integration-client

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-11414: Add filter button

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-11414: Add translations for filters

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-11414: Synced channels count

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-11414: Actions

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-11414: Add isLoading for connect

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-11414: Create connection and integration

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-11414: Use social id from hulygram

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-11414: Remove old integrations

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-11414: Gmail state

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-11414: Gmail state and disconnect all handler

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-11414: Add tests

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-11414: Formatting

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-11414: Gmail sync state

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-11414: Fix rush check

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-11414: Fix gmail tests

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-11414: Fix calendar actions and config

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-11414: Calendar state

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-11414: Access config

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-11414: Github integration state

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-11414: Fix svelte errors

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-11414: Fix formatting

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-11414: Fix typos

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-11414: Fix validate

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-11414: Fix translations

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-11414: Retry on network issues

Signed-off-by: Artem Savchenko <armisav@gmail.com>

---------

Signed-off-by: Artem Savchenko <armisav@gmail.com>
2025-08-04 15:14:06 +07:00
Alexey ZinovievandGitHub eb11d3515e UBERF-12325: Add mongo warning for v7 (#9543)
Signed-off-by: Alexey Zinoviev <alexey.zinoviev@xored.com>
2025-07-15 16:52:37 +07:00
Anton AlexeyevandGitHub 446a2f9dda Add a separate setting to control if guests can join WS (#9540)
Signed-off-by: Anton Alexeyev <alexeyev.anton@gmail.com>
2025-07-14 12:36:46 +07:00
Anton AlexeyevandGitHub 73fa668681 Readonly allow signup (#9517)
Signed-off-by: Anton Alexeyev <alexeyev.anton@gmail.com>
2025-07-11 13:19:37 +07:00
Alexey ZinovievandGitHub d7ac2e78e1 uberf-9488: account operations unit tests (#9503)
Signed-off-by: Alexey Zinoviev <alexey.zinoviev@xored.com>
2025-07-09 12:12:31 +07:00
Alexey ZinovievandGitHub 8b5bfc35d1 uberf-12170: support merging person in addSocialIdToPerson (#9470) 2025-07-04 22:55:33 +05:00
Alexey ZinovievandGitHub 97849388ed UBERF-11998: Support account deletion from admin page (#9441)
Signed-off-by: Alexey Zinoviev <alexey.zinoviev@xored.com>
2025-07-03 18:26:33 +07:00
Alexey ZinovievandGitHub 28fdc84494 UBERF-10254: Manage own social ids (#9398)
Signed-off-by: Alexey Zinoviev <alexey.zinoviev@xored.com>
2025-07-03 00:35:25 +05:00