Commit Graph

577 Commits (60fa6c46a5a7adb73ea1157e5245512c230dc0a1)

Author SHA1 Message Date
Julian Lam ab2e1ecb40 feat(topic-events): work in progress topic events logic and client-side implementation
Julian Lam 6b1c97db79 feat: feature flag for auto-resolving a user's flags on ban [breaking]
The default behaviour has now been changed to 'off'. Going forward, a user's flags will no longer automatically resolve on ban.
Julian Lam b2b1450e5d fix: , render 400 error page on bad access to /register
Barış Soner Uşaklı d83d40cf9b fix: missing error message
Julian Lam e5edbc6faf feat: automatically attempt socket.io reconnection on ajaxify
Also, updated messaging and toaster to accurately reflect offline-mode state
Barış Soner Uşaklı c1ecfd1ebf feat: , don't try to reconnect forever
Julian Lam 223f0a5515 feat(acp): admin tags privilege
Julian Lam d90aa95808 feat: add confirmation modal when assigning admin:admins-mods privilege
Julian Lam fb46a8d975 feat(acp): admins-mods privilege
Julian Lam da191341e8 feat(acp): added new admin privilege for groups management
Julian Lam a30c8ab5c8 feat: clent-side modal for managing topic thumbs
closes 
Barış Soner Uşaklı 0f480be658 fix: , dont prevent admins from deleting other users
Barış Soner Uşaklı 6669496dba
Navigator ()
* feat: navigator changes

* fix: remove extra code

* feat: add lang keys
Barış Soner Uşaklı 86b7f8a5d4 fix: , dont show null for purged targets
psychobunny 53abada5f0 Revert "feat: option to allow auto-joining of groups (optionally skip the "request membership" step)"
This reverts commit 685f3c6aa6.
psychobunny 685f3c6aa6 feat: option to allow auto-joining of groups (optionally skip the "request membership" step)
psychobunny c1a7968d23 feat: user notification settings for group.leave event
Barış Soner Uşaklı b46d2f93e6 fix: , add missing lang strings
Barış Soner Uşaklı 1eb5fabdb1 feat: , postQueue setting for category
Barış Soner Uşaklı 5080f35752 fix: , logout on password reset, dont verify email if password expired
dont allow same password on reset
Barış Soner Uşaklı 546f58bf1f fix: timestamp in queue, add post queue strings
Barış Soner Uşaklı 1269103fbb fix: , post-queue ux
Barış Soner Uşaklı d3c04afb98 fix: , copy color on tag rename, dont copy if target exists
refresh page on tag rename
Barış Soner Uşaklı 6e6a7a8f8a fix: , export csv to file
Julian Lam 1e7cf1cbc4 fix: , disallow flags of privileged users (mods, gmods, admins)
Julian Lam 12b3aa0d8f feat: add translation key for pin icon label with expiry
gasoved a56a657759
fix: missing select/clear all checkbox added to category privileges template ()
Julian Lam ac734b8335 fix:
Julian Lam 046d0b1637
feat: allow pins to expire (if set) ()
* fix: add back topic assert middleware for pin route

* feat: server-side handling of pin expiries

* refactor: togglePin to not require uid parameter [breaking]

* feat: automatic unpinning if pin has expiration set

* feat: client-side modal for setting pin expiration

* refactor: categories.getPinnedTids to accept multiple cids

... in preparation for pin expiry logic, direct access to *:pinned zsets is discouraged

* fix: remove references to since-removed jobs file for topics

* feat: expire pins when getPinnedTids is called

* refactor: make the togglePin change non-breaking

The 'action:topic.pin' hook now sends uid again, as before. However, if it is a system action (that is, a pin that expired), 'system' will be sent in instead of a valid uid
Barış Soner Uşaklı 9ca44e6f54
feat: add displayname into user obj ()
* feat: add displayname into user obj 

* fix: spec

* perf: dont load settings if acp setting is turned off
Barış Soner Uşaklı 4e9b10ab76 feat:
Barış Soner Uşaklı fb567a7a33 feat:
Barış Soner Uşaklı a6afcfd531 feat: , allow flagging self posts
dont count flags towards self posts
dont allow flagging your own account
Barış Soner Uşaklı 35f932cd64 feat: , add oldCategory if topic is moved
Barış Soner Uşaklı b44ddecdf8 feat: , separate notification type for group chats
Barış Soner Uşaklı 1d6bcbebde feat: https://github.com/NodeBB/NodeBB/issues/8147
gasoved 3ccebf112e
feat: invites regardless of registration type, invite privilege, groups to join on acceptance ()
* feat: allow invites in normal registration mode + invite privilege

* feat: select groups to join from an invite

* test: check if groups from invitations have been joined

* fix: remove unused variable

* feat: write API versions of socket calls

* docs: openapi specs for the new routes

* test: iron out mongo redis difference

* refactor: move inviteGroups endpoint into write API

* refactor: use GET /api/v3/users/:uid/invites/groups

Instead of GET /api/v3/users/:uid/inviteGroups

* fix: no need for /api/v3 prefix when using api module

* fix: tests

* refactor: change POST /api/v3/users/invite

To POST /api/v3/users/:uid/invites

* refactor: make helpers.invite awaitable

* fix: restrict invite API to self-use only

* fix: move invite groups controller to write api, +tests

* fix: tests

Co-authored-by: Julian Lam <julian@nodebb.org>
Julian Lam 8518404e22
feat: allow groups to specify which cids to show member posts from ()
* feat: allow groups to specify which cids to show member posts from

* docs: fix tests for openapi

* fix: test breakage caused by improper conditional

* feat: server-side checking of memberPostCids for validity

* feat: admin panel template update to select categories to include

* refactor: privilege helpers.isUserAllowedTo

... to helpers.isAllowedTo, allowing group names to be passed in
Opliko 04f4429f72
Resolve - optional timer for registration queue ()
* feat:  Optional timer for registration queue

* feat: show minutes in average time

* fix: don't show total number of minutes

* feat: implement requested changes

* fix: just store minutes instead of milliseconds

* feat: set default values
Barış Soner Uşaklı 2e44639210 fix: guest header/footer cache
allow clearing individual caches
Barış Soner Uşaklı f1f9b225b0
feat: , cache refactor ()
* feat: , cache refactor

ability to disable caches
ability to download contents of cache
refactor cache modules to remove duplicated code

* fix: remove duplicate hit/miss tracking

check cacheEnabled in getUncachedKeys
Barış Soner Uşaklı 9e3eb5d41a feat: , allow guest topic views
Barış Soner Uşaklı 6ac73ccb7e feat: , disable express compression by default
Barış Soner Uşaklı e6440c0d21 fix: , fix move all
add new language keys
Barış Soner Uşaklı 872bacf1c4
Admin/users ()
* feat: wip admin/users

* feat: more work

* feat: more fixes

* feat: , verified/unverified user groups

* feat: add filter

* feat: change user search to use filters array

* refactor: remove unused search call

* fix: tests

* fix: cant join system groups

* fix: upgrade script
Barış Soner Uşaklı f259063f08 fix: , dont add admins to table
cryptoethic b3ed26ac2c
feat: revoke user sessions above threshold ()
* feat: revoke user sessions above threshold

* fix: removed translations from en-US

* fix: defined default maxUserSessions in install\data\defaults.json
Julian Lam 2ec838fc59 feat(writeapi): token generation/delete routes, ACP updates
Julian Lam 49652e6f1b feat: management of API tokens via ACP
Barış Soner Uşaklı e60357d20d
feat: , add top/popular sections to digest email ()
Barış Soner Uşaklı 54737d3076 feat: , search sub categories
psychobunny 14ba1a6dbb feat: analytics:maxCache setting in ACP
I removed a TODO from core. Watch your head as flying pigs are abound
psychobunny 9c5b690799 feat: up recommended size to 512x512 + ACP labels for PWA
psychobunny 6478b32d0e feat: upload maskable icon for PWA
Julian Lam b12e8d6312 feat: show top 5 trending plugins in new tab in Extend > Plugins
psychobunny 4c1e717b2b fix: update notification delay ACP help text
psychobunny 5b427a0c3b feat: option in ACP to configure notification/email delay for chats
Timothy Fike f85fe7faff
don't invite an already invited email ()
* don't invite an already invited email

* add email-invited translation string
Julian Lam 5ddf70221c feat: upon plugin installation via ACP, check against nbbpm first
psychobunny 2ad3305879 fix: language key in reset password
Barış Soner Uşaklı bd9b6c99e6 feat: add missing lang key
Barış Soner Uşaklı 23de5613bd feat: add x-posts/x-votes keys
Julian Lam 43571bac38 feat: hotkey "/" to open ACP search
Julian Lam 762e9fe88c feat: undo for posts move
Barış Soner Uşaklı 5a40d26b44 feat: , new move posts modal
Barış Soner Uşaklı a34b685c65 fix: remove lang keys, remove sounds menu
Barış Soner Uşaklı 46ab2711d4 fix: , add CSP frame-ancestors
Julian Lam 0c20351702 feat: additional sorting options for flags
+ upvotes, +downvotes, +replies
Julian Lam a93e19559d fix: missing language sources for ip-blacklist/post-queue
Julian Lam 4dc6e64a94 refactor: ip-blacklist and post-queue language files
closes 
Kyle Farris 2b785628e7
fix: removed invalid options for the sendmail transport ()
* Removed invalid options for the sendmail transport that were causing Nodemailer to return the SMTPTransport instead.

* Removed options for rate limiting in admin email interface. Added new option for toggling whether to use pooled connections.
Julian Lam abb5e81d0d feat: allow undo of topic move
Julian Lam bacee6b467 fix: missing localisation for topic move error
Julian Lam a3a2279358 feat: logic for bulk actions in flags list,
Julian Lam 334be11382 fix: no-widgets messaging in ACP + copy
Julian Lam 346db0d84d feat: flags list sorting, closes
Julian Lam a716a5529c
feat: more discrete commit-on-save instead of commit-on-change w/ confirm modals ()
* feat: privileges save button, , WIP

* fix: disable firefox autocomplete on privilege form fields

* feat: closes  privilege changes commit on save

- new language strings for confirmation and success modals/toasts
- indeterminate privilege handling (/cc @psychobunny)
- added new discard button
- both discard and save buttons now have confirmation dialogs

* fix(tests): remove duplicate template helper test

* fix(tests): broken template helper test

* feat: confirm dialogs for all privilege copy actions

Also, ability to add user to a privilege table without needing
to refresh the privilege table.

* feat: group row addition w/o table refresh

breaking: helpers.getUserPrivileges and helpers.getGroupPrivileges
no longer make socket calls to the following hooks:

- filter:privileges.list, filter:privileges.admin.list,
  filter:privileges.global.list, filter:privileges.groups.list,
  filter:privileges.admin.groups.list,
  filter:privileges.gloval.groups.list

The filters are still called, but done before the helper method
is called, and the results are passed in instead. This change
should only affect you if you directly call the helper methods,
otherwise the change is transparent.

* fix: stale ajaxify data on privilege category switch

* fix: implicit privileges not showing for user privs

* fix: groups, not group, also fix tests

* fix(tests): again

* fix: wrong tpl rendered when adding group to global priv table
Barış Soner Uşaklı 91411cc47c feat: add privileges shortcut to groups list
fix issues with escape group names
Julian Lam c705e08a76 feat: allow direct link to flag from post tools,
Barış Soner Uşaklı fd4c3cda42 fix: , remove new notif alert
Barış Soner Uşaklı 24535a62e7 feat: make category tools in acp a dropdown
add view category, view privileges into dropdown
Julian Lam 55b0e902fb feat: consolidation of flags to reduce flagspam,
Squashed commit of the following:

commit c6d09396208a10c244d7b3d22ffd2d7dd1274d3a
Author: Julian Lam <julian@nodebb.org>
Date:   Fri Jul 24 13:41:32 2020 -0400

    fix: more tests

commit 32f9af2a87a81fa62ecca01e71d6f0d5b9d37ba1
Merge: e50907535 4eae927d1
Author: Julian Lam <julian@nodebb.org>
Date:   Fri Jul 24 10:53:04 2020 -0400

    Merge remote-tracking branch 'origin/master' into singleton-flags

commit e50907535109dbdbe8f15c3e2fcdf22d90b1332a
Author: Julian Lam <julian@nodebb.org>
Date:   Fri Jul 24 10:52:46 2020 -0400

    fix: controllers-admin test

commit fd5af99e303de48a80b0ccc166eee19175cf232b
Author: Julian Lam <julian@nodebb.org>
Date:   Fri Jul 17 17:26:55 2020 -0400

    fix(tests): dummy commit to trigger travisCI

commit c452a6ffcfaef91403de084c4ae16795cb23c60e
Author: Julian Lam <julian@nodebb.org>
Date:   Fri Jul 17 17:05:09 2020 -0400

    fix(openapi): openapi spec changes

commit 8089a74e89128141ab1e6f8ff83447114b3b846b
Author: Julian Lam <julian@nodebb.org>
Date:   Fri Jul 17 15:48:00 2020 -0400

    fix: reversing the order of reports for display purposes

commit a099892b377333561c72f1ad5b6b20ddb4ce8a96
Author: Julian Lam <julian@nodebb.org>
Date:   Fri Jul 17 15:45:44 2020 -0400

    refactor: run all flag creation calls in a single batch

commit b24999682f9d5a33a08a049749c1f0eb4f00facc
Author: Julian Lam <julian@nodebb.org>
Date:   Fri Jul 17 15:08:23 2020 -0400

    feat: handling multiple reporters per flag, 

commit 08c75c020021ada754bf0e39eae77d631b01dee5
Author: Julian Lam <julian@nodebb.org>
Date:   Thu Jul 16 20:53:18 2020 -0400

    feat: upgrade script for 
Barış Soner Uşaklı 23a9a334cd feat: short more info
Barış Soner Uşaklı 1e7397b1b8 feat: allow searching categories in ACP
Barış Soner Uşaklı 320008cd49 feat: , don't scroll chat to bottom if user scrolled up
psychobunny 06143ca7d7 feat: added quick link to edit privileges on the category edit page
Julian Lam 9fb9185fa7 feat: hide some filters behind 'more filters' button
Julian Lam e3e55f25d0 refactor: flag sanity checks, +feat: flag limits
- Added new config flag:limitPerTarget, to disallow flags after an item has
  already been flagged x times (default 0, or infinite)
- New zset flags:byTarget, score is the number of times a flag has been made
  against that item
- "already-flagged" translation key removed, now "post-already-flagged" or
  "user-already-flagged" -- this fixed bug where flagging a user you've already
  flagged would tell you you've already flagged this post already.
- Refactored Flags.canFlag to throw errors only, instead of returning boolean
- Updated ACP form inputs for reputation settings page to be more bootstrappy
- +1 upgrade script
Julian Lam f85a45c722 feat: logic for flag note deletion,
Barış Soner Uşaklı 00d39fb32c feat: , export groups members as csv
Barış Soner Uşaklı 3dcf538773 feat: , allow wildcard search for uid/email
Barış Soner Uşaklı 46a6686300 fix: category search in selector
Barış Soner Uşaklı c513b88dff feat: , daily downvote limits
Barış Soner Uşaklı 4adbf87c6c feat: warn user if whitelisted tags are less than minTags
Barış Soner Uşaklı 9eb748b985 fix: , fix url to merged topic in subfolder installs
Julian Lam 6931f29d53 feat: allow flagging of user acounts from post tools menu
Barış Soner Uşaklı e09ab3dc19 feat: closes , allow configuring max topic count
Barış Soner Uşaklı bffb830d87 feat: add missing translation key
Barış Soner Uşaklı 8383992dcc feat: move export functions into child processes
Julian Lam 35a06a8419 feat: breadcrumbs for ip-blacklist/post queue/flags
Julian Lam d5af976915 feat: flags' quick assignment
Julian Lam 58b3d608fc feat: allow post diffs to be restored,
Barış Soner Uşaklı 3a80a1651a feat: add missing translation
Barış Soner Uşaklı c4bdeae06e feat: merge improvements wip
Barış Soner Uşaklı a255c8f6fd fix: language
Julian Lam 4d60eac60f feat: options to delete account, content, or both
Julian Lam 67aca822e6 feat: account content deletion, closes
Julian Lam a82e9bd7f6
feat: privileges for Admin Control Panel ()
* feat: acp privileges (WIP)

* fix: restore global privilege hooks

* refactor: using cid 0 in admin privs

* fix: no need for zebrastripe-reset

* feat: manage:categories privilege WIP

* feat: renamed prefix to admin:, settigns and dashboard privs

* fix: nofocus on acp privs group find modal

* refactor: privileges.x.get() to not used hardcoded privs

* fix: crash if unable to get latest version

* feat: setting acp priv

* Revert "fix: crash if unable to get latest version"

This reverts commit afdb235f48eb0072d88de45f3a1e0151281095b3.

* feat: user/privilege acp privs

* fix: category selector in manage/privileges

* fix: guests potentially becoming admins

* fix: bug in setting admin privs

* fix: some last minute things + api docs

* fix: some more last minute fixes
Barış Soner Uşaklı 30cc83c033 fix: , revert event delete
Julian Lam 09184f4027 fix: new language tag for select_tags
Julian Lam 260a482caa fix: remove duplicate link to manage/tags in settings/tags
Julian Lam 8ea1634824 feat: flag quick actions for delete/restore/purge
Julian Lam 0633ad3277 fix: acp menu items
- Shuffled items in settings
- Moved post-queue and ip-blacklist to front-end
- Removed Settings > Sockets, merged with Settings > Advanced
Julian Lam a83f4259e8 fix: re-jigged tags acp pages
Julian Lam a51fff8bd1
refactor: remove general menu from ACP ()
* refactor: remove general menu from ACP

* fix: incorrect translation keys, fixed tests
Barış Soner Uşaklı a9315aee7d fix: , add missing translation
Julian Lam 8d995d1eb6 refactor: flags detail page
- Show account moderation history
- Ban and delete quick actions

Squashed commit of the following:

commit 0e782e65f4d48ae814708e510ec9d01bcdd914e0
Author: Julian Lam <julian@nodebb.org>
Date:   Tue May 26 20:24:53 2020 -0400

    fix(deps): use persona 10.1.41/vanilla 11.1.17

commit 369e073d3c3189d8ce181eb3d573489cbe54d4fc
Author: Julian Lam <julian@nodebb.org>
Date:   Tue May 26 20:23:24 2020 -0400

    fix: allow ban and delete exported methods to have cbs

commit b83a086ea31a77ec82d161306c0b9bc115cb2a3a
Merge: 525aae1ea 256ee45d3
Author: Julian Lam <julian@nodebb.org>
Date:   Tue May 26 08:54:25 2020 -0400

    Merge remote-tracking branch 'origin/master' into flags-improvements

commit 525aae1ea2e5d0103028a0f0c8dde05f172d088e
Author: Julian Lam <julian@nodebb.org>
Date:   Tue May 26 08:53:39 2020 -0400

    feat: integrate ban history and username changes to flag history list

commit 3e68ad28ba266f4c8620a676aa7f463f0a9d1df7
Author: Julian Lam <julian@nodebb.org>
Date:   Mon May 25 18:22:53 2020 -0400

    feat: allow ban and deletion from flag details page

commit a559ea1d8e8883385c2876868d855a0b93516c54
Author: Julian Lam <julian@nodebb.org>
Date:   Mon May 25 18:22:00 2020 -0400

    feat: export banAccount and deleteAccount methods from accounts module
Ali Cihan 256ee45d37
typo ()
Barış Soner Uşaklı f0323b6cfa feat: closes , add more data to export profile
Barış Soner Uşaklı a73c755b05 feat: closes , edit post notif for watched topic posts
Julian Lam fcb81cb8ca fix: guest handles shown in category.tpl
Barış Soner Uşaklı 2d07634494
fix: , update gdpr link again
Barış Soner Uşaklı 17d664e098 fix: , point to official site
Opliko 6e5ebb6184
feat: manifest.json improvements from ()
* feat: manifest.json improvements from 

* Fix short title placeholder

* use lowercase letters for hex colors
Barış Soner Uşaklı 0b5fac75b0 fix: , add missing lang key
psychobunny b67af70da4 fix: hsts max-age missing translation
Barış Soner Uşaklı 5e91a67e78 feat: add user ip to admin/dev/info
Barış Soner Uşaklı 326367556f fix: tag key
Barış Soner Uşaklı 067034082f fix: , update deleted/restored messages
Barış Soner Uşaklı 05c9fe2735 feat: , allow changing user groups from manage users page
Baris Usakli 4d66978338 fix: , configurable necroThreshold
Barış Soner Uşaklı 7ed002a138 fix:
Julian Lam df139928b6
feat: displaying one-click unsubscribe link in email footer ()
closes 
Julian Lam 645d647248
feat: wip, better digest handling (+ eventual digest resend logic) ()
* feat: wip, better digest handling (+ eventual digest resend logic)

- await emailer.send call in digest.send method
- save send success to a new sorted set digest:{interval}:byUid

* feat: continuing work on digest tools

- Added ACP page to view digest settings and delivery times per user

* feat: added paginator and stub buttons for resending digest

* feat: wrapping up digest revamp

- New language strings in ACP digest page
- Client-side ACP script for digest ACP page
- Websocket call for ACP page to execute digests
- Broke out logic to retrieve user digest settings to getUsersInterval

* fix: minor cleanup

* fix:  and some style suggestions from baris

* fix: resolve confusing comment
Barış Soner Uşaklı 1cedc4a0d6 feat: , allow post queue based on group
allow multiple select in ACP pages
Julian Lam 3952849f30
fix: , tweak wording; password reset success
Baris Usakli 485fbd2f14 feat: , change all categories at once
allow passing cids to setCategoryWatchState and category.exists
Baris Usakli 990508a533 feat: closes , translate widget-settings
Baris Usakli 554e67116f feat: remove ability to delete events from acp
Julian Lam 54c9f877a6 fix: , ACP digest wording
Barış Soner Uşaklı ed1223645e feat: send notification to group owners when someone leaves
Barış Soner Uşaklı babb9d7c55 fix: , dont allow urls in fullname/location, validate birthday
Barış Soner Uşaklı 5b8550f060 fix: time cutoff and lang string
Opliko b9583ed838 Add privilege for accessing user information ()
* Add view users info global privilege

* Show user ip only to global mods and admins

* fix missing comma

* Hide link for users without correct privilege

* move getting privilege information to getAllData

* Hide the link from Global Moderators as well

* Give Global Moderator view:users:info privilege

* Restrict ip in post menu to view:users:info

* add some trailing commas....

* Add privilege to categories test

* Add group privilege to categories test

* add upgrade script

* fix style for TravisCI

* more styling - change spaces to tabs

* some more styling fixes (hopefully final one)

* fix style for Travis CI

* hide ip in chat messages

* Don't show even hidden ips on user profile page
Barış Soner Uşaklı 2a5fe2b8f4 fix: , translate log in to view
Julian Lam 1796b65d34 feat: option to restrict group leaving, closes
Barış Soner Uşaklı 547bb4966d fix: , show correct title based on digest interval
Barış Soner Uşaklı 21e81f961c fix:
Barış Soner Uşaklı 3ff6e1bb64 feat: dashboard stats
show
yesterday/today
lastweek/this week
lastmonth/this month
Julian Lam 1a2a381ae3 feat: notification on membership acceptance, closes