* Loggly-only user support events (#12676)
* feat(analytics): Loggly-only user support events
* fix(analytics): clean up more Unknowns
* wip: allow tracking events from the server
* analytics: allow tracking generic events on the server
* remove console.logs
* remove console.log (client)
* add integration test
Co-authored-by: Sabe Jones <sabrecat@gmail.com>
* Issue 10209 - Remove read usages of zone
* Issue 10209 - Add coverage on daysSince and startOfDay cron utility functions
* Issue 10209 - Add unit test for daysUserHasMissed method
* Issue 10209 - Remove usages of deprecated `moment.js#zone` method.
* Issue 10209 - Add helper function to centralise logic
Also simplify timezoneOffsetToUtc function in site.vue
* Issue 10209 - Also add getUtcOffset as method on user
Co-authored-by: Matteo Pagliazzi <matteopagliazzi@gmail.com>
* improve comments for api.getUserChallenges
* clarify members parameter when creating test guilds
I was uncertain about this parameter and read the code to clarify it.
Reading a comment is easier. :)
* add "Custom Day Start time" to api route's title as it's the common name
* wip: define items as mixed objects
* add default owned gear
* mark modified
* more mark modified
* more mark modified
* more mark modified
* more mark modified
* fix common tests
* fix common tests
* update mongoose
* add itemsUtils
* use new util function in hall controller
* add tests for items utils
* update website/server to mark all items as modified
* start updating common code
* update login incentives
* update unlock
* remove changes to package-lock.json
* remove changes to package.json
* remove parallel saves from the code
* fix more unit tests
* do not save users when sending message in buyGift (saved later)
* fix test
* reinstall
* fix tests
* fix tests
* removing duplicate translation key
* fixing typos
* extracting quest prerequisite check. adding check for previous quest completion, if required
* fixing (undoing) static change, adding tests
* more typos
* correcting test failures
* honoring quest prerequisites in quest invite API call. updating format of il8n string replacement arg
* no longer using apiError, use translate method instead (msg key was not defined)
* adding @apiError to docblock as requested in issue
* removing checks on quest invite method. small window of opportunity/low risk
* removing file that only contained a reference to a missing folder
* fixing typo
* using full dates to avoid moment warning in tests
* more typos
* sending an empty string to vue bootstrap tooltip (disabling it) if no challenge short name is set
* protect all paths in user.pre(save using this.isDirectSelected to see if a field is available
* fix linting
* authWithHeaders: specify user fields to exclude instead of the ones to include, add comments, doc and improve test
* add more options to unit helper generateReq and add tests for excluding fields in authWithHeaders
* update API comments to for `username` restrictions and to use Login Name terminology
We use "login name" rather than "username" in user-visible text
on the website and (usually) when communicating with users because
"username" could be confused with "profile name".
Using it in the docs allows you to search for that term.
* add alphanumeric and length validation for creating new login name (username)
The 'en-US' locale is specified explicitly to ensure we never use
another locale. The point of this change is to limit the character
set to prevent login names being used to send spam in the Welcome
emails, such as Chinese language spam we've had trouble with.
* add error messages for bad login names
* allow login name to also contain hyphens
This is because our automated tests generate user accounts using:
let username = generateUUID();
* allow login names to be up to 36 characters long because we use UUIDs as login names in our tests
* revert back to using max 20 characters and only a-z, 0-9 for login name.
It's been decided to change the username generation in the tests instead.
* disable test that is failing because it's redundant
Spaces are now prohibited by other code.
We can probably delete this test later. I don't want to delete it
now, but instead give us time to think about that.
* fix typos
* revert to login name restrictions that allow us to keep using our existing test code
I'm really not comfortable changing our test suite in ways that
aren't essential, especially since we're working in a hurry with
a larger chance than normal of breaking things.
The 36 character length is larger than we initially decided but
not so much larger that it's a huge problem.
We can reduce it to 20 when we have more time.
* limit username length to 20 chars
* fix tests
* Added subscriptions to all members when group subs
* Added unsub when group cancels
* Give user a subscription when they join a subbed group
* Removed subscription when user leaves or is removed from group
* Fixed linting issues:
* Added tests for users with a subscription being upgraded to group plan
* Added tests for checking if existing recurring user sub gets updated during group plan. Added better merging for plans
* Added test for existing gift subscriptions
* Added additional months to user when they have an existing recurring subscription and get upgraded to group sub
* Adds test for user who has cancelled with date termined in the future
* Added test to ensure date termined is reset
* Added tests for extra months carrying over
* Added test for gems bought field
* Add tests to for fields that should remain when upgrading
* Added test for all payment methods
* Added prevention for when a user joins a second group plan
* Fixed subscribing tests
* Separated group plan payment tests
* Added prevention of editing a user with a unlimited sub
* Add tests to ensure group keeps plan if they are in two and leave one
* Ensured users with two group plans do not get cancelled when on group plan is cancelled
* Ensured users without group sub are untouched when group cancels
* Fixed lint issues
* Added new emails
* Added fix for cron tests
* Add restore to stubbed methods
* Ensured cancelled group subscriptions are updated
* Changed group plan exist check to check for date terminated
* Updated you cannont delete active group message
* Removed description requirement
* Added upgrade group plan for Amazon payments
* Fixed lint issues
* Fixed broken tests
* Fixed user delete tests
* Fixed function calls
* Hid cancel button if user has group plan
* Hide difficulty from rewards
* Prevented add user functions to be called when group plan is cancelled
* Fixed merge issue
* Correctly displayed group price
* Added message when you are about to join canclled group plan
* Fixed linting issues
* Updated tests to have no redirect to homes
* Allowed leaving a group with a canceld subscription
* Fixed spelling issues
* Prevented user from changing leader with active sub
* Added payment details title to replace subscription title
* Ensured we do not count leader when displaying upcoming cost
* Prevented party tasks from being displayed twice
* Prevented cancelling and already cancelled sub
* Fixed styles of subscriptions
* Added more specific mystery item tests
* Fixed test to refer to leader
* Extended test range to account for short months
* Fixed merge conflicts
* Updated yarn file
* Added missing locales
* Trigger notification
* Removed yarn
* Fixed locales
* Fixed scope mispelling
* Fixed line endings
* Removed extra advanced options from rewards
* Prevent group leader from leaving an active group plan
* Fixed issue with extra months applied to cancelled group plan
* Ensured member count is calculated when updatedGroupPlan
* Updated amazon payment method constant name
* Added comment to cancel sub user method
* Fixed smantic issues
* Added unite test for user isSubscribed and hasNotCancelled
* Add tests for isSubscribed and hasNotCanceled
* Changed default days remaining to 2 days for group plans
* Fixed logic with adding canceled notice to group invite
* start migrating to bcrypt
* added method to convert the password to bcrypt when logging in, added method to compare password without knowing the hashing algorhytm, remove default
* travis: try to upgrade to container based infrastructure
* travis: add deps to build bcrypt.js
* travis: add deps to build bcrypt.js
* travis: add deps to build bcrypt.js
* travis: add deps to build bcrypt.js
* use bcryptjs until bcrypt can be installed on travis, see https://github.com/kelektiv/node.bcrypt.js/issues/476
* correct sha1 unit tests
* try different mongodb repo
* try without mognodb services
* try again with bcrypt
* disable request logging in travis
* migrate missing routes
* simplify code
* remove bcryptjs
* fix typo
* fix typo
* fix typo in comment
* add unit tests for new passwords utility emthods
* travis: back to old infrastructure, containers often have timeouts
* add integration test for passwordHashMethod
* update shrinkwrap
* clarify code and add comments
* add integration tests
* fix linting
* fix integration tests
* Added all ui components back
* Added group ui items back and initial group approval directive
* Added approval list view with approving functionality
* Added notification display for group approvals
* Fixed linting issues
* Removed expectation from beforeEach
* Moved string to locale
* Added per use group plan for stripe
* Added tests for stripe group plan upgrade
* Removed paypal option
* Abstract sub blocks. Hit group sub block from user settings page. Added group subscriptin beneifts display
* Fixed lint issue
* Added pricing and adjusted styles
* Moved text to translations
* Added group email types
* Fixed typo
* Fixed group plan abstraction and other style issues
* Fixed email unit test
* Added type to group plan to filter our group plans
* Removed dev protection from routes
* Removed hard coding and fixed upgrade plan
* Added error when group has subscription and tries to remove
* Fixed payment unit tests
* Added custom string and moved subscription check up in the logic
* Added ability for old leader to delete subscription the created
* Allowed old guild leader to edit their group subscription
* Fixed linting and tests
* Added group sub page to user sub settings
* Added approval and group tasks requests back. Hid user group sub on profile
* Added group tasks sync after adding to allow for editing
* Fixed promise chain when resolving group
* Added approvals to group promise chain
* Ensured compelted group todos are not delted at cron
* Updated copy and other minor styles
* Added group field to tags and recolored group tag.
* Added chat message when task is claimed
* Preventing task scoring when approval is needed
* Added approval requested indicator
* Updated column with for tasks on group page
* Added checklist sync on assign
* Added sync for checklist items
* Added checkilist sync when task is updated
* Added checklist sync remove
* Sanatized group tasks when updated
* Fixed lint issues
* Added instant scoring of approved task
* Added task modal
* Fixed editing of challenge and group tasks
* Added cancel button
* Added add new checklist option to update sync
* Added remove for checklist
* Added checklist update
* Added difference check and sync for checklist if there is a diff
* Fixed task syncing
* Fixed linting issues
* Fixed styles and karma tests
* Fixed minor style issues
* Fixed obj transfer on scope
* Fixed broken tests
* Added new benefits page
* Updated group page styles
* Updated benefits page style
* Added translations
* Prevented sync with empty trask list
* Added task title to edit modal
* Added new group plans page and upgrade redirect
* Added group plans redirect to upgrade
* Fixed party home page being hidden and home button click
* Fixed dynamic changing of task status and grey popup
* Fixed tag editing
* Hid benifites information if group has subscription
* Added quotes to task name
* Fixed issue with assigning multiple users
* Added new group plans ctrl
* Hid menu from public guilds
* Fixed task sync issue
* Updated placeholder for assign field
* Added correct cost to subscribe details
* Hid create, edit, delete task options from non group leaders
* Prevented some front end modifications to group tasks
* Hid tags option from group original task
* Added refresh for approvals and group tasks
* Prepend new group tasks
* Fix last checklist item sync
* Fixed casing issue with tags
* Added claimed by message on hover
* Prevent user from deleting assigned task
* Added single route for group plan sign up and payments
* Abstracted stripe payments and added initial tests
* Abstracted amazon and added initial tests
* Fixed create group message
* Update group id check and return group
* Updated to use the new returned group
* Fixed linting and promise issues
* Fixed broken leave test after merge issue
* Fixed undefined approval error and editing/deleting challenge tasks
* Add pricing to group plans, removed confirmation, and fixed redirect after payment
* Updated group plan cost text
* transferGems: use receiver language translation for PM strings #7722
* chore(test): DRY up transfer gems test
* chore(test): Allow check for language in translation assertion
* chore(test): Add test that member locales are used in transfer gems msg
* sendMessage: optionally take also the message in sender's language
when present, it is stored in the sender's inbox instead of the version
in the target language.
* transferGems: prepare pm in both languages #7722
* sendMessage: take an object for the second parameter instead
* payments: made two more gift strings translatable
* buyGems: send both translations for gifted gems
* buyGems: send push notifications in target user's locale
* createSubscription: send both translations for gifted subs
* createSubscription: send push notifications in target user's locale
* transferGems: send push notifications in target user's locale
* tests: adjust payment tests for translation changes
* added function doc for sendMessage
* tests: added bilingual test for buyGems
* refactor: Move translate test utility to helpers directory
* Add kind property to webhooks
* feat: Add options to create webhook route
* refactor: Move webhook ops into single file
* refactor: Create webhook objects for specific webhook behavior
* chore(tests): Add default sleep helper value of 1 second
* feat(api): Add method for groups to send out webhook
* feat(api): Add taskCreated webhook task creation
* feat(api): Send chat webhooks after a chat is sent
* refactor: Move webhook routes to own controller
* lint: Correct linting errors
* fix(api): Correct taskCreated webhook method
* fix(api): Fix webhook logging to only log when there is an error
* fix: Update groupChatRecieved webhook creation
* chore: Add integration tests for webhooks
* fix: Set webhook creation response to 201
* fix: Correct how task scored webhook data is sent
* Revert group chat recieved webhook to only support one group
* Remove quest activity option for webhooks
* feat: Send webhook for each task created
* feat: Allow webhooks without a type to default to taskScored
* feat: Add logic for adding ids to webhook
* feat: optimize webhook url check by shortcircuiting if no url is passed
* refactor: Use full name for webhook variable
* feat: Add missing params to client webhook
* lint: Add missing semicolon
* chore(tests): Fix inccorect webhook tests
* chore: Add migration to update task scored webhooks
* feat: Allow default value of webhook add route to be enabled
* chore: Update webhook documentation
* chore: Remove special handling for v2
* refactor: adjust addComputedStatsToJSONObject to work for webhooks
* refactor: combine taskScored and taskActivity webhooks
* feat(api): Add task activity to task update and delete routes
* chore: Change references to taskScored to taskActivity
* fix: Correct stats object being passed in for transform
* chore: Remove extra line break
* fix: Pass in the language to use for the translations
* refactor(api): Move webhooks from user.preferences.webhooks to user.webhooks
* chore: Update migration to set webhook array
* lint: Correct brace spacing
* chore: convert webhook lib to use user.webhooks
* refactor(api): Consolidate filters
* chore: clarify migration instructions
* fix(test): Correct user creation in user anonymized tests
* chore: add test that webhooks cannot be updated via PUT /user
* refactor: Simplify default webhook id value
* refactor(client): Push newly created webhook instead of doing a sync
* chore(test): Add test file for webhook model
* refactor: Remove webhook validation
* refactor: Remove need for watch on webhooks
* refactor(client): Update webhooks object without syncing
* chore: update webhook documentation
* Fix migrations issues
* chore: remove v2 test helper
* fix(api): Provide webhook type in task scored webhook
* fix(client): Fix webhook deletion appearing to delete all webhooks
* feat(api): add optional label field for webhooks
* feat: provide empty string as default for webhook label
* chore: Update webhook migration
* chore: update webhook migration name
* fix: correct translation strings for pet/mount names
* chore: expose potion and egg key, not object in pet content api
* fix: Update feed route to use potion and egg objects
* refactor: Update feed route to use petInfo
* Use pet/mount text method for name
* correct feed route
* Added initial code for creating and reading group tasks
* Separated group task routes. Separated shared task functions
* Added taskOrder to group
* Minor style fixes
* Fixed lint issues
* Added unit tests for task manager
* Updated task helper functions
* Fixed history test
* Fixed group task query
* Removed extra var
* Updated with new file structure
* Updated noset values
* Removed unecessary undefineds, fixed comments, Added apiignore
* Separated group task routes. Separated shared task functions
* Added unit tests for task manager
* Added initial groups assign route and tests
* Added sync assigned task to user
* Added unassign route and unlink method
* Added remove and unlink group task
* Updated linking and unlinking. Add test for updating task info
* Added delete group task and tests
* Added sync on task update and tests
* Added multiple users assignment
* Updated unassign for multiple users
* Added test for delete task with multiple assigend users
* Added update task for multiple assigned users
* Fixed issue with get tasks
* Abstracted syncable attributes and add tests
* Fixed merge conflicts
* Fixed style issues, limited group query fields, and added await
* Fixed group fields needed. Removed api v2 code
* Fixed style issues
* Moved group field under group sub document. Updated tests. Fixed other broken tests
* Renamed linkedTaskId and fixed broken alias tests
* Added debug middleware to new routes
* Fixed debug middleware import
* Added additional user id check for original group tasks
* Updated challenge task check to look for challenge id
* Added checklist sync fix