Commit Graph

188 Commits

Author SHA1 Message Date
nathan f196208c9b chore: print feature 2024-02-23 05:40:35 +08:00
Zack Fu Zi Xiang c50f872bb7
Revert "Merge pull request #328 from AppFlowy-IO/workspace-add-email"
This reverts commit 5e7794646a, reversing
changes made to d5869742c2.
2024-02-22 10:48:10 +08:00
Zack Fu Zi Xiang 4413f61f26
Merge branch 'main' into workspace-add-email 2024-02-20 10:16:58 +08:00
Nathan.fooo 8e36792dd9
fix: metrics (#331) 2024-02-20 08:34:57 +08:00
Nathan.fooo 5cd16d7544
chore: load user id and uuid when start (#329)
* chore: load user id and uuid when start

* chore: fix test

* chore: fix test
2024-02-20 05:43:33 +08:00
Zack Fu Zi Xiang f9d9977076
chore: merge with main 2024-02-20 00:40:42 +08:00
Zack Fu Zi Xiang 32fe1cc24d
feat: send email and create user if adding member but member not exist 2024-02-19 15:40:36 +08:00
Nathan.fooo 815be08d3b
chore: metrics for access control (#326)
* chore: metrics for access control

* chore: fix test
2024-02-19 12:26:35 +08:00
Nathan.fooo f713ebedaa
chore: cache policy when load (#325) 2024-02-19 10:01:40 +08:00
Nathan.fooo c9a3cd6b1b
chore: rename dir (#324)
* chore: rename dir

* chore: clippy
2024-02-19 08:28:32 +08:00
Nathan.fooo 44d2a6809f
chore: fix migration miss (#321) 2024-02-18 17:38:14 +08:00
Nathan.fooo 2f0f093331
refactor: access control (#318)
* refactor: dir

* chore: update

* fix: test

* chore: fix test

* chore: clippy

* chore: update config

* chore: update
2024-02-17 01:15:06 +08:00
Zack e1ac591ea0
Merge pull request #310 from AppFlowy-IO/admin-frontend/self-host-env
Admin frontend/self host env
2024-02-09 15:15:56 +08:00
Nathan.fooo a1494f0d09
feat: Realtime metrics (#309)
* chore: add metric

* chore: add metric

* chore: clippy

* chore: clippy

* ci: set rust version

* ci: set rust version

* ci: set rust version
2024-02-09 12:02:54 +08:00
Zack Fu Zi Xiang 8626b54de8
fix: redirect users after signup via magiclink 2024-02-09 02:13:11 +08:00
Nathan.fooo d497f2ab62
fix: pg lock (#299)
* chore: fix pg lock

* chore: fix pg lock
2024-02-06 13:44:39 +08:00
Zack Fu Zi Xiang f787c32a62
feat: added pg connection lifetime 2024-02-06 08:17:22 +08:00
Nathan.fooo 1a7866e651
chore: use redis to cache collab data (#294)
* chore: use redis to cache collab data

* chore: create table

* chore: use cache

* chore: period check group status

* chore: remove trait

* chore: update logs

* chore: update logs

* chore: update logs

* chore: update logs
2024-02-05 09:54:16 +08:00
Nathan.fooo 9cd1f5ab0a
feat: cache uid (#290)
* feat: cache uid

* chore: remove select uid call

* chore: break loop if mailbox close
2024-02-03 13:08:49 +08:00
Nathan.fooo e1b35a1a24
feat: enable cors in nginx (#276)
* feat: enable cors in nginx

* chore: update

* chore: fix ci
2024-01-29 13:14:50 +08:00
Fynn Petersen-Frey a39395d90c S3 compatiblity with garage 2023-12-28 15:54:23 +01:00
Fu Zi Xiang 04e00dea95
feat: add more initialization logs 2023-12-20 20:38:11 -08:00
Zack a7b259ad20
feat: use only env var for appflowy cloud (#224)
* feat: use only env var for appflowy cloud

* fix: jwt local testing

* fix: security audit

* feat: update docker deploy configs

* fix: test utils dotenvy

* fix: test try sqlx offline

* fix: add gotrue configs for appflowy

* fix: redis uri in docker
2023-12-19 08:45:42 +08:00
JesseBot 36c792915c feat: add additional info logging to init_state function in application.rs 2023-12-12 12:16:38 +01:00
Jiraffe7 36ef0f13b0
feat: casbin access control (#178)
* feat: casbin for access control

* fix: method to generate database url instead of ToString

* fix: hold write lock when modifying policies

* chore: fix compile

* fix: remove db constraint for lib integration tests

---------

Co-authored-by: nathan <nathan@appflowy.io>
2023-12-11 11:08:15 +08:00
Nathan.fooo c0f5c2ce7e
feat: fix flaky test (#202)
* test: fix

* fix: flaky test
2023-12-09 12:48:46 +08:00
Nathan.fooo ee31a680b5
chore: unlimited json payload size (#197)
* chore: return ok when token is empty

* chore: remove json payload size limit

* chore: clippy
2023-12-06 14:21:11 +08:00
Nathan.fooo 0e2ec381df
chore: implement symmetric encrypt (#192) 2023-12-04 11:50:56 +08:00
Zack 3890f5d306
feat: User deletion (#177)
* feat: database trigger for hard delete of user

* feat: clean delete user data

* feat: hard delete when admin deletes
2023-11-27 01:07:45 +08:00
Nathan.fooo 54ef875f5f
feat: notify user profile change (#163)
* feat: send user profile changes via ws

* test: add tests
2023-11-13 22:58:18 +08:00
Nathan.fooo 487bc25767
fix: subscriber drop (#158)
* chore: test

* chore: test

* chore: test

* chore: test

* chore: test

* chore: test

* chore: test

* chore: test

* chore: test

* chore: test

* chore: test

* chore: test

* chore: test
2023-11-10 13:41:12 +08:00
Nathan.fooo f1dad07caa
feat: http init sync (#151)
* fix: bugs

* chore: support message type

* refactor: ws message

* feat: post realtime message

* feat: use proto to reduce message size

* ci: update

* ci: install protoc

* ci: update docker

* chore: update ci

* ci: update docker

* ci: fix

* ci: fix

* ci: fix
2023-11-08 15:41:39 +08:00
Fu Zi Xiang 91bc8568ae
fix: unwrap 2023-11-07 11:00:37 +08:00
Fu Zi Xiang d06f8d89b7
chore: remove unneeded print 2023-11-07 10:01:00 +08:00
Fu Zi Xiang 32390676f1
fix: user not allowed 2023-11-07 01:17:08 +08:00
Fu Zi Xiang 17044ad4f0
feat: indempotency restart for email autoconfirm and non autoconfirm 2023-11-07 00:32:28 +08:00
Fu Zi Xiang c029759573
chore: merge with main 2023-11-06 23:54:36 +08:00
Fu Zi Xiang a6f7198443
chore: remove unneeded binding 2023-11-06 13:54:45 +08:00
Fu Zi Xiang b785b1a482
fix: restartable server when autoconfirm is true 2023-11-06 13:50:38 +08:00
Nathan.fooo d088fd2ec8
feat: ws frame size (#146)
* chore: update ws frame size

* chore: update

* chore: update frame size to 64 kb

* chore: fix merge

* chore: update

* chore: update collab rev

* chore: update

* chore: update

* chore: update

* chore: update

* chore: update

* chore: update ws state

* chore: update pg max connect

* chore: fix crash
2023-11-04 21:42:06 +08:00
Zack 37a759ead6
feat: Request Id (#144)
* feat: added basic monitoring stack

* docs(grafana): import steps and recommended imports

* feat(metric): api metrics

* feat(prometheus): add appflowy cloud metric scraping job

* fix: put back tracing logger

* feat: middleware for path counter

* feat: added gotrue to prometheus metrics

* feat: added nginx to prometheus metrics

* feat: added latency and result to metrics

* feat(nginx): set request id to header

* feat: added request id in nginx

* feat: simplify metric collection

* feat: added simple grafana dashboard for appflowy cloud

* feat(logging): added logging stack

* docs: improve monitoring docs

* docs: added known common issues

* feat: give persistence

* feat: add exemplars

* fix: docker compose volumes

* feat(grafana): add trace id to prometheus datasource

* feat(grafana): improve dashboard to include exemplars

* feat: request id middleware

* docs: move doc to more relevant place

* chore: clean up logs

* feat: try json fmt

* feat: remove pretty

* feat: logging use json in prod but pretty in local
2023-11-03 16:57:05 +08:00
Zack 1cc1158d36
feat: Metrics (#141)
* feat: added basic monitoring stack

* docs(grafana): import steps and recommended imports

* feat(metric): api metrics

* feat(prometheus): add appflowy cloud metric scraping job

* fix: put back tracing logger

* feat: middleware for path counter

* feat: added gotrue to prometheus metrics

* feat: added nginx to prometheus metrics

* feat: added latency and result to metrics

* feat(nginx): set request id to header

* feat: added request id in nginx

* feat: simplify metric collection

* feat: added simple grafana dashboard for appflowy cloud

* feat(logging): added logging stack

* docs: improve monitoring docs

* docs: added known common issues

* feat: give persistence

* feat: add exemplars

* fix: docker compose volumes

* feat(grafana): add trace id to prometheus datasource

* feat(grafana): improve dashboard to include exemplars
2023-11-02 15:34:00 +08:00
Nathan.fooo cb9cdb9280
feat: collab permission test (#126)
* chore: check permission for collab storage proxy

* feat: add permission tests

* chore: skip log
2023-10-19 17:12:21 +08:00
Nathan.fooo 9dc7bbeee0
feat: Collab access control (#120)
* chore: check collab message with access permission

* chore: imple collab permission service

* refactor: migrations

* chore: collab member ops

* chore: collab permission

* chore: update can edit workspace collab

* chore: fix test

* feat: fetch collab members

* chore: fix test

* chore: fix client api

* chore: check permission for collab storage proxy
2023-10-17 14:00:04 +08:00
Nathan.fooo 88be0c2433
refactor: access control (#118)
* refactor: access control

* chore: fix test
2023-10-15 10:56:56 +08:00
Nathan.fooo 5c58f95f9f
feat: workspace access control (#115)
* feat: workspace access control

* feat: extact workspace id from path

* feat: create member with permission set

* chore: update sqlx files

* chore: fix cargo toml warn

* chore: clippy
2023-10-13 20:02:29 +08:00
Nathan.fooo ef726092be
refactor: file storage (#110)
* refactor: return file id after save to disk

* test: add tests

* chore: mine type

* test: disbale two client sync test

* chore: get file with url

* refactor: client api
2023-10-11 21:36:57 +08:00
Nathan.fooo a02da07627
Test deploy docker log (#105)
* chore: try to fix logs in docker

* ci: test deploy

* ci: log level
2023-10-08 21:42:25 +08:00
Nathan.fooo c0aea377d0
test: test with dev client (#91)
* test: test with dev client

* chore: add nginx conf

* chore: fix clippy

* chore: disable docker in lint
2023-10-04 21:43:21 +08:00
Zack 583f82b7fb
refactor: collab http (#89)
* refactor: collab http

* fix: sqlx uuid in types client_api
2023-10-04 16:59:03 +08:00
Nathan.fooo 3133e5ec32
chore: try fix test (#84) 2023-09-30 12:36:42 +08:00
Nathan.fooo 19ee96db4a
chore: rename crate (#82) 2023-09-28 22:20:48 +08:00
Zack ff6a8e1eaf
feat: File api (#70)
* feat: s3 minio wip

* feat: s3 minio bucket create idempotent

* feat: put storage setting into configurations

* chore: clippy lint

* feat: add setting to base config

* feat: add configuration for prod

* fix: allow use different minio host

* feat: add server file storage

* fix: add missing file

* feat: add code template

* feat: add http api

* feat: added file upload to client api

* feat: database metadata impl

* fix: added missing files

* feat: added test cases and improve impl

---------

Co-authored-by: nathan <nathan@appflowy.io>
2023-09-27 10:21:37 +08:00
Zack f1a16058ce
feat: Gotrue admin api (#73)
* feat: set up admin account and auto confirm during appflowy start

* feat: client auth against gotrue whenever possible

* feat: admin add user

* feat: implement admin add user

* feat: generate registered user

* fix: enable cloud feature for client_api

* fix: test same user fix
2023-09-23 17:07:02 +08:00
Zack 67706f9e8e
feat: File api (#68)
* feat: s3 minio wip

* feat: s3 minio bucket create idempotent

* feat: put storage setting into configurations

* chore: clippy lint

* feat: add setting to base config

* feat: add configuration for prod

* fix: allow use different minio host
2023-09-22 15:10:41 +08:00
Zack 0676db7ed6
feat: Workspace members (#63)
* fix: create user if they sign up with oauth

* feat: add workspaces_members add and remove operations

* feat: add insert workspace members

* feat: attach db ops to api ops

* refactor: separate user and workspace scope

* chore: add sqx query metadata

* chore: add 2nd registered user for testing

* ci: use valid email

* ci: fix registered password invalid

* fix: use email instead of uid

* fix: use email instead of uid sqlx query metadata

* feat: add test for workspace member

* test: added workspace add and delete with checking

* ci: fix email
2023-09-19 20:59:16 +08:00
Nathan.fooo 7ae645a7c1
test: add ws reconnect test (#58)
* test: add test

* test: add reconnect
2023-09-18 11:42:32 +08:00
Zack 3c598f178e
ci: test env docker-compose deployment (#48)
* ci: test env docker-compose deployment

* ci: test deployment

* fix: replace delimiter with pipe to avoid conflict

* fix: API_EXTERNAL_URL_TEST from secrets

* chore: remove unneeded deploy when pull request

* fix: cloud public host name/address

* chore: trigger: change to push

* chore: add ext_url for exposed gotrue auth server
2023-09-15 21:13:43 +08:00
Nathan.fooo 939ea29c3b
feat: Realtime multiple conn test(#45)
* chore: multiple connection with same user

* chore: connect with device id

* fix: multiple connection

* test: add more test

* chore: fmt
2023-09-15 09:59:37 +08:00
Nathan.fooo b1adcc7919
test: websocket connect and then edit collab test (#40)
* refactor: realtime dir

* test: add test

* test: fix
2023-09-14 09:34:24 +08:00
Nathan.fooo b32fcff4d4
test: Collab handler test (#36)
* chore: implement collab requests

* test: add more tests

* chore: update scope path
2023-09-13 12:52:22 +08:00
Nathan.fooo f0f58f98f3
feat: create collab handlers (#34)
* feat: logged user after sign up/sign in

* test: fix test

* chore: update sqlx files

* chore: add router

* chore: parser user uuid from token
2023-09-12 21:52:25 +08:00
Nathan.fooo 9ac53dca8e
chore: implement collab storage using postrges (#31)
* chore: implement collab storage using postrges

* chore: update collab rev

* chore: update .sqlx files
2023-09-12 15:36:33 +08:00
Zack da03009004
feat: use apply server migration when server starts (#30)
* feat: use apply server migration when server starts

* fix: add docs and fix local run

* feat: refactor migration

* feat: local build server wait on gotrue

* fix: add back sqlx commands

* fix: add migrations directory

* fix: try SQLX_OFFLINE=true

* test: fix rustlint

* chore: clippy fmt

---------

Co-authored-by: nathan <nathan@appflowy.io>
2023-09-12 15:12:08 +08:00
Zack 853f089ca0
feat: test gotrue when app start, use state for gotrue client, use go… (#24)
* feat: test gotrue when app start, use state for gotrue client, use gotrue UUID instead of BIGINT for user uid

* feat: backward compatibility with native authetication

* fix: native auth use uuid instead

* fix: sqlx preparation

* fix: sqlx metadata and unused variable

* fix: clippy

* fix: create workspace if not exist after sign in

* chore: update .sqlx with new query

* feat: query workspace

* revert: revert using i64 for user id

* fix: update sqlx queries

* fix: update .sqlx metadata

* feat: only use uuid from sqlx types, select user_profile view

* ci: add version check

* ci: add missing sqlx files

* chore: cargo fmt
2023-09-11 17:16:41 +08:00
Nathan.fooo 3cd3240bfc
chore: move realtime test (#26)
* chore: fix tests

* chore: add test server

* chore: move tests
2023-09-10 19:35:29 +08:00
Zack d4577f5e61
Feat: enrich http dto (#20)
* feat: add scripts for easier dev

* feat: add Json<T> as resp type for http server

* feat: restructure server and client shared entity

* feat: restructure server and client shared entity

* feat: use serde_repr to deserialize enum into json number

* feat: minor adjustment to results and server error

* feat: test: fix unconfirmed email message

* feat: test: add test case for existing user

* feat: test: modified api for sign_out

* feat: test: add test case pass
2023-09-08 20:01:28 +08:00
Nathan.fooo c1f8d79169
chore: separate crates (#18) 2023-09-07 19:40:11 +08:00
Nathan.fooo f9825d4221
feat: refactor server collab (#15)
* refactor: collab storage

* chore: fix test

* chore: update sqlx version

* chore: disable realtime test

* chore: sqlx prepare

* chore: remove init.sql
2023-09-06 18:22:40 +08:00
Zack c8ae099e90
feat: Auth server integration (#9)
* feat: integrate signup with gotrue auth server

* feat: added email and password sign in via auth server

* feat: added sign in scenarios and client handling

* fix: added missing files

* feat: refine api and store access token in client

* feat: impl token decode and placeholder for signout

* feat: added impl for logout with auth server

* feat: auth server dependency injection, client sign_out impl

* feat: abstract verify token, add placeholder for update endpoint

* feat: make authorization as a param of http handler request

* feat: add update_user to client of auth server

* feat: add client code and test cases for password change

* chore: rename appflowy-server to appflowy-cloud

* ci: upgrade reqwest version to fix audit issue

* ci: fix again

* ci: added gotrue env secrets

---------

Co-authored-by: nathan <nathan@appflowy.io>
2023-09-04 11:23:40 +08:00
Nathan.fooo 8b9e6584d2
feat: ws reconnect (#5)
* feat: ws reconnect

* chore: update collab rev
2023-05-10 20:54:10 +08:00
Nathan.fooo 90ae1d5fb6
Feat/ws test (#4)
* test: ws test

* test: update

* test: update

* test: sync update

* feat: ws test
2023-05-10 20:26:30 +08:00
Nathan.fooo 18e950a829
feat: ws connect (#3)
* chore: ws

* chore: build client stream

* feat: test ws connect

* ci: fix ci
2023-05-08 19:03:50 +08:00
Nathan.fooo bb80fd5350
fix: redis connect (#2)
* fix: redis connect

* chore: add Readme and support no tls

* chore: cache docker build

* chore: update

* fix: fix postgres and redis connection

* chore: update port

* ci: lint
2023-05-05 00:00:02 +08:00
nathan 648ec41cf3 ci: fix warning 2023-03-16 21:16:46 +08:00
appflowy 0fa6536c7a refactor: use i64 as user id 2023-03-16 11:23:42 +08:00
appflowy faacd8dd47 feat: create token crate 2023-03-15 14:41:23 +08:00
nathan b2c59409b8 feat: config network 2023-03-15 10:02:37 +08:00
nathan bbcfe33fe7 fix: request fail caused by certificate issue 2023-03-15 09:32:23 +08:00
nathan d834637d2f feat: ws message 2023-03-14 09:34:00 +08:00
nathan 5a7e223b99 feat: support ws 2023-03-14 00:05:23 +08:00
appflowy 542bc83144 feat: change password 2023-03-13 13:10:58 +08:00
nathan 25b1f8eeb7 feat: change password 2023-03-13 09:17:14 +08:00
nathan 508961d07d feat: register user test 2023-03-12 16:37:54 +08:00
nathan 690ea42d85 refactor: config log 2023-03-12 09:18:06 +08:00
nathan 7b706b54ce refactor: auth 2023-03-11 22:01:25 +08:00
appflowy 3012acce30 refactor: use cargo workspace 2022-02-07 15:08:49 +08:00
appflowy 0bda429d93 init appflowy server 2022-02-06 10:55:48 +08:00