Support user and team preferences (#4081)

* feat: support user preferences

* feat: support team preferences

* fix: update snapshots

* feat: update last visited url by user

* fix: update snapshots

* fix: use path instead of complete url

* fix: do not expose preferences to other users with the exception of admin

* feat: support defaultDocumentStatus as a team preference

* feat: allow edit even when collaborative editing is enabled

* Revert "feat: allow edit even when collaborative editing is enabled"

This reverts commit a22a02a406d01eb418dab32249b8b846bf77c59b.

* Revert "feat: support defaultDocumentStatus as a team preference"

This reverts commit 4928cffe5c682952b1e469a3e50a1a34d05dcc58.

* fix: keep preference as a boolean
This commit is contained in:
Apoorv Mishra
2022-09-14 16:07:39 +05:30
committed by GitHub
parent 607a795dd0
commit ce410c4bf3
10 changed files with 171 additions and 3 deletions

View File

@@ -17,7 +17,7 @@ import logger from "@server/logging/Logger";
import auth from "@server/middlewares/authentication";
import { rateLimiter } from "@server/middlewares/rateLimiter";
import { Event, User, Team } from "@server/models";
import { UserFlag, UserRole } from "@server/models/User";
import { UserFlag, UserRole, UserPreference } from "@server/models/User";
import { can, authorize } from "@server/policies";
import { presentUser, presentPolicies } from "@server/presenters";
import {
@@ -26,6 +26,8 @@ import {
assertPresent,
assertArray,
assertUuid,
assertKeysIn,
assertBoolean,
} from "@server/validation";
import pagination from "./middlewares/pagination";
@@ -174,7 +176,7 @@ router.post("users.info", auth(), async (ctx) => {
router.post("users.update", auth(), async (ctx) => {
const { user } = ctx.state;
const { name, avatarUrl, language } = ctx.body;
const { name, avatarUrl, language, preferences } = ctx.body;
if (name) {
user.name = name;
}
@@ -184,6 +186,16 @@ router.post("users.update", auth(), async (ctx) => {
if (language) {
user.language = language;
}
if (preferences) {
assertKeysIn(preferences, UserPreference);
if (preferences.rememberLastPath) {
assertBoolean(preferences.rememberLastPath);
user.setPreference(
UserPreference.RememberLastPath,
preferences.rememberLastPath
);
}
}
await user.save();
await Event.create({
name: "users.update",