Remove dependency of RC namespace in root server folder - step 1 (#13390)

* Remove some dependencies inside rocketchat-lib/client  (#13210)

* Move function to rc-utils

* Change import from to export directly

* Removing duplicated dependency and remove old code

* Import some variables to remove dependency of RC namespace

* Remove some dependencies inside rocketchat-lib/lib (#13212)

* Move some functions from lib to rc-ui-utils

* Move some functions from lib ro rc-utils

* Remove hostname from RC namespace

* Import variables to remove dependency of RC namespace

* Remove some dependencies inside rocketchat-lib/server/functions (#13214)

* Move integrations models to rc-models

* Move composeMessage function to rc-utils

* Move PushNotifications class to push-notifications package

* Import variables to remove dependency of RC namespace

* Remove some dependencies inside rocketchat-lib/server/lib (#13217)

* Move integrations models to rc-models

* Move composeMessage function to rc-utils

* Move PushNotifications class to push-notifications package

* Import variables to remove dependency of RC namespace

* Import variables to remove RC namespace dependency inside rc-lib/server/lib

* Remove some dependencies inside rocketchat-lib/server/methods (#13218)

* Move integrations models to rc-models

* Move composeMessage function to rc-utils

* Move PushNotifications class to push-notifications package

* Import variables to remove dependency of RC namespace

* Import variables to remove RC namespace dependency inside rc-lib/server/lib

* Import variables to remove RC namespace inside rc-lib/server/methods

* Remove some dependencies inside rocketchat-lib/server/startup, publications... (#13222)

* Move integrations models to rc-models

* Move composeMessage function to rc-utils

* Move PushNotifications class to push-notifications package

* Import variables to remove dependency of RC namespace

* Import variables to remove RC namespace dependency inside rc-lib/server/lib

* Import variables to remove RC namespace inside rc-lib/server/methods

* Import variables to remove dependency with RC namespace

* Remove duplicated server settings (#13223)

* Move integrations models to rc-models

* Move composeMessage function to rc-utils

* Move PushNotifications class to push-notifications package

* Import variables to remove dependency of RC namespace

* Import variables to remove RC namespace dependency inside rc-lib/server/lib

* Import variables to remove RC namespace inside rc-lib/server/methods

* Import variables to remove dependency with RC namespace

* Remove duplicated server settings located in rc-lib

*  Export functions and lib function of rc-lib but keep it inside RC namespace (#13225)

* Move integrations models to rc-models

* Move composeMessage function to rc-utils

* Move PushNotifications class to push-notifications package

* Import variables to remove dependency of RC namespace

* Import variables to remove RC namespace dependency inside rc-lib/server/lib

* Import variables to remove RC namespace inside rc-lib/server/methods

* Import variables to remove dependency with RC namespace

* Remove duplicated server settings located in rc-lib

* Export function and lib function of rc-lib but keep it inside RC namespace

* Fix missed exports and re-add some functions to RC namespace

*  Import variables from functions and lib to remove RC namespace dependency (#13226)

* Move integrations models to rc-models

* Move composeMessage function to rc-utils

* Move PushNotifications class to push-notifications package

* Import variables to remove dependency of RC namespace

* Import variables to remove RC namespace dependency inside rc-lib/server/lib

* Import variables to remove RC namespace inside rc-lib/server/methods

* Import variables to remove dependency with RC namespace

* Remove duplicated server settings located in rc-lib

* Export function and lib function of rc-lib but keep it inside RC namespace

* Import variables from functions and lib to remove RC namespace dependency

*  Remove dependency of RC namespace in rc-sandstorm (#13227)

* Move integrations models to rc-models

* Move composeMessage function to rc-utils

* Move PushNotifications class to push-notifications package

* Import variables to remove dependency of RC namespace

* Import variables to remove RC namespace dependency inside rc-lib/server/lib

* Import variables to remove RC namespace inside rc-lib/server/methods

* Import variables to remove dependency with RC namespace

* Remove duplicated server settings located in rc-lib

* Export function and lib function of rc-lib but keep it inside RC namespace

* Import variables from functions and lib to remove RC namespace dependency

* Remove dependency of RC namespace in rc-sandstorm

*  Remove dependency of RC namespace in chatpal-search (#13231)

* Move integrations models to rc-models

* Move composeMessage function to rc-utils

* Move PushNotifications class to push-notifications package

* Import variables to remove dependency of RC namespace

* Import variables to remove RC namespace dependency inside rc-lib/server/lib

* Import variables to remove RC namespace inside rc-lib/server/methods

* Import variables to remove dependency with RC namespace

* Remove duplicated server settings located in rc-lib

* Export function and lib function of rc-lib but keep it inside RC namespace

* Import variables from functions and lib to remove RC namespace dependency

* Remove dependency of RC namespace in rc-sandstorm

* Remove dependency of RC namespace in chatpal-search

*  Remove dependency of RC namespace in meteor saml (#13233)

* Move integrations models to rc-models

* Move composeMessage function to rc-utils

* Move PushNotifications class to push-notifications package

* Import variables to remove dependency of RC namespace

* Import variables to remove RC namespace dependency inside rc-lib/server/lib

* Import variables to remove RC namespace inside rc-lib/server/methods

* Import variables to remove dependency with RC namespace

* Remove duplicated server settings located in rc-lib

* Export function and lib function of rc-lib but keep it inside RC namespace

* Import variables from functions and lib to remove RC namespace dependency

* Remove dependency of RC namespace in rc-sandstorm

* Remove dependency of RC namespace in chatpal-search

* Move CreadentialTokens model to rc-models

* Move getUsernameSuggestion function and method from server/ to rc-lib

* Remove dependency of RC namespace in meteor saml

*  Remove dependency of RC namespace in rc-theme (#13234)

* Move integrations models to rc-models

* Move composeMessage function to rc-utils

* Move PushNotifications class to push-notifications package

* Import variables to remove dependency of RC namespace

* Import variables to remove RC namespace dependency inside rc-lib/server/lib

* Import variables to remove RC namespace inside rc-lib/server/methods

* Import variables to remove dependency with RC namespace

* Remove duplicated server settings located in rc-lib

* Export function and lib function of rc-lib but keep it inside RC namespace

* Import variables from functions and lib to remove RC namespace dependency

* Remove dependency of RC namespace in rc-sandstorm

* Remove dependency of RC namespace in chatpal-search

* Move CreadentialTokens model to rc-models

* Move getUsernameSuggestion function and method from server/ to rc-lib

* Remove dependency of RC namespace in meteor saml

* Remove dependency of RC namespace in rc-theme

*  Remove dependency of RC namespace in rc-2fa (#13235)

* Move integrations models to rc-models

* Move composeMessage function to rc-utils

* Move PushNotifications class to push-notifications package

* Import variables to remove dependency of RC namespace

* Import variables to remove RC namespace dependency inside rc-lib/server/lib

* Import variables to remove RC namespace inside rc-lib/server/methods

* Import variables to remove dependency with RC namespace

* Remove duplicated server settings located in rc-lib

* Export function and lib function of rc-lib but keep it inside RC namespace

* Import variables from functions and lib to remove RC namespace dependency

* Remove dependency of RC namespace in rc-sandstorm

* Remove dependency of RC namespace in chatpal-search

* Move CreadentialTokens model to rc-models

* Move getUsernameSuggestion function and method from server/ to rc-lib

* Remove dependency of RC namespace in meteor saml

* Remove dependency of RC namespace in rc-theme

* Move 2FA Users model to rc-models

* Remove dependency of RC namespace in rc-2fa

*  Remove dependency of RC namespace in rc-action-links (#13236)

* Move integrations models to rc-models

* Move composeMessage function to rc-utils

* Move PushNotifications class to push-notifications package

* Import variables to remove dependency of RC namespace

* Import variables to remove RC namespace dependency inside rc-lib/server/lib

* Import variables to remove RC namespace inside rc-lib/server/methods

* Import variables to remove dependency with RC namespace

* Remove duplicated server settings located in rc-lib

* Export function and lib function of rc-lib but keep it inside RC namespace

* Import variables from functions and lib to remove RC namespace dependency

* Remove dependency of RC namespace in rc-sandstorm

* Remove dependency of RC namespace in chatpal-search

* Move CreadentialTokens model to rc-models

* Move getUsernameSuggestion function and method from server/ to rc-lib

* Remove dependency of RC namespace in meteor saml

* Remove dependency of RC namespace in rc-theme

* Move 2FA Users model to rc-models

* Remove dependency of RC namespace in rc-2fa

* Remove dependency of RC namespace in rc-action-links

* Add action links in the RC namespace

*  Remove dependency of RC namespace in rc-analytics and rc-assets (#13237)

* Move integrations models to rc-models

* Move composeMessage function to rc-utils

* Move PushNotifications class to push-notifications package

* Import variables to remove dependency of RC namespace

* Import variables to remove RC namespace dependency inside rc-lib/server/lib

* Import variables to remove RC namespace inside rc-lib/server/methods

* Import variables to remove dependency with RC namespace

* Remove duplicated server settings located in rc-lib

* Export function and lib function of rc-lib but keep it inside RC namespace

* Import variables from functions and lib to remove RC namespace dependency

* Remove dependency of RC namespace in rc-sandstorm

* Remove dependency of RC namespace in chatpal-search

* Move CreadentialTokens model to rc-models

* Move getUsernameSuggestion function and method from server/ to rc-lib

* Remove dependency of RC namespace in meteor saml

* Remove dependency of RC namespace in rc-theme

* Move 2FA Users model to rc-models

* Remove dependency of RC namespace in rc-2fa

* Remove dependency of RC namespace in rc-action-links

* Add action links in the RC namespace

* Remove dependency of RC namespace in rc-analytics

* Remove dependency of RC namespace in rc-assets

* Add Assets in RC namespace

* Rename Assets variable to avoid conflicts

* Fix rename Assets

*  Remove dependency of RC namespace in rc-markdown, rc-autolinker and rc-autotranslate (#13240)

* Move integrations models to rc-models

* Move composeMessage function to rc-utils

* Move PushNotifications class to push-notifications package

* Import variables to remove dependency of RC namespace

* Import variables to remove RC namespace dependency inside rc-lib/server/lib

* Import variables to remove RC namespace inside rc-lib/server/methods

* Import variables to remove dependency with RC namespace

* Remove duplicated server settings located in rc-lib

* Export function and lib function of rc-lib but keep it inside RC namespace

* Import variables from functions and lib to remove RC namespace dependency

* Remove dependency of RC namespace in rc-sandstorm

* Remove dependency of RC namespace in chatpal-search

* Move CreadentialTokens model to rc-models

* Move getUsernameSuggestion function and method from server/ to rc-lib

* Remove dependency of RC namespace in meteor saml

* Remove dependency of RC namespace in rc-theme

* Move 2FA Users model to rc-models

* Remove dependency of RC namespace in rc-2fa

* Remove dependency of RC namespace in rc-action-links

* Add action links in the RC namespace

* Remove dependency of RC namespace in rc-analytics

* Remove dependency of RC namespace in rc-assets

* Add Assets in RC namespace

* Remove dependency of RC namespace in rc-autolinker

* Move autotranslate models to rc-models

* Partial remove dependency of Rc namespace in rc-autotranslate

* Remove dependency of RC namespace in rc-markdown

* Finish of remotion of RC namespace in rc-autotranslate

* Import Autotranslate where it has been used

* Fix lint

* Rename Assets variable to avoid conflicts

* Fix rename Assets

* Fix wrong imports

*  Remove dependency of RC namespace in rc-blockstack, bot-helpers and cas (#13246)

* Move integrations models to rc-models

* Move composeMessage function to rc-utils

* Move PushNotifications class to push-notifications package

* Import variables to remove dependency of RC namespace

* Import variables to remove RC namespace dependency inside rc-lib/server/lib

* Import variables to remove RC namespace inside rc-lib/server/methods

* Import variables to remove dependency with RC namespace

* Remove duplicated server settings located in rc-lib

* Export function and lib function of rc-lib but keep it inside RC namespace

* Import variables from functions and lib to remove RC namespace dependency

* Remove dependency of RC namespace in rc-sandstorm

* Remove dependency of RC namespace in chatpal-search

* Move CreadentialTokens model to rc-models

* Move getUsernameSuggestion function and method from server/ to rc-lib

* Remove dependency of RC namespace in meteor saml

* Remove dependency of RC namespace in rc-theme

* Move 2FA Users model to rc-models

* Remove dependency of RC namespace in rc-2fa

* Remove dependency of RC namespace in rc-action-links

* Add action links in the RC namespace

* Remove dependency of RC namespace in rc-analytics

* Remove dependency of RC namespace in rc-assets

* Add Assets in RC namespace

* Remove dependency of RC namespace in rc-autolinker

* Move autotranslate models to rc-models

* Partial remove dependency of Rc namespace in rc-autotranslate

* Remove dependency of RC namespace in rc-markdown

* Finish of remotion of RC namespace in rc-autotranslate

* Import Autotranslate where it has been used

* Fix lint

* Rename Assets variable to avoid conflicts

* Fix rename Assets

* Remove dependency of RC namespace in rc-blockstack

* Remove RC dependency in bot-helpers

* Remove RC dependency in rc-cas

* Fix wrong imports

* Remove dependency of RC namespace in rc-channel-settings (#13251)

* Move integrations models to rc-models

* Move composeMessage function to rc-utils

* Move PushNotifications class to push-notifications package

* Import variables to remove dependency of RC namespace

* Import variables to remove RC namespace dependency inside rc-lib/server/lib

* Import variables to remove RC namespace inside rc-lib/server/methods

* Import variables to remove dependency with RC namespace

* Remove duplicated server settings located in rc-lib

* Export function and lib function of rc-lib but keep it inside RC namespace

* Import variables from functions and lib to remove RC namespace dependency

* Remove dependency of RC namespace in rc-sandstorm

* Remove dependency of RC namespace in chatpal-search

* Move CreadentialTokens model to rc-models

* Move getUsernameSuggestion function and method from server/ to rc-lib

* Remove dependency of RC namespace in meteor saml

* Remove dependency of RC namespace in rc-theme

* Move 2FA Users model to rc-models

* Remove dependency of RC namespace in rc-2fa

* Remove dependency of RC namespace in rc-action-links

* Add action links in the RC namespace

* Remove dependency of RC namespace in rc-analytics

* Remove dependency of RC namespace in rc-assets

* Add Assets in RC namespace

* Remove dependency of RC namespace in rc-autolinker

* Move autotranslate models to rc-models

* Partial remove dependency of Rc namespace in rc-autotranslate

* Remove dependency of RC namespace in rc-markdown

* Finish of remotion of RC namespace in rc-autotranslate

* Import Autotranslate where it has been used

* Fix lint

* Rename Assets variable to avoid conflicts

* Fix rename Assets

* Remove dependency of RC namespace in rc-blockstack

* Remove RC dependency in bot-helpers

* Remove RC dependency in rc-cas

* Move some functions from tokenpass to channel settings and models

* Move some function from livestream to channel settings

* Remove dependency of RC namespace in rc-channel-settings

* Fix wrong imports

* readd saveRoomName to RC namespace

*  Remove dependency of RC namespace in rc-channel-mail-messages and cloud (#13254)

* Move integrations models to rc-models

* Move composeMessage function to rc-utils

* Move PushNotifications class to push-notifications package

* Import variables to remove dependency of RC namespace

* Import variables to remove RC namespace dependency inside rc-lib/server/lib

* Import variables to remove RC namespace inside rc-lib/server/methods

* Import variables to remove dependency with RC namespace

* Remove duplicated server settings located in rc-lib

* Export function and lib function of rc-lib but keep it inside RC namespace

* Import variables from functions and lib to remove RC namespace dependency

* Remove dependency of RC namespace in rc-sandstorm

* Remove dependency of RC namespace in chatpal-search

* Move CreadentialTokens model to rc-models

* Move getUsernameSuggestion function and method from server/ to rc-lib

* Remove dependency of RC namespace in meteor saml

* Remove dependency of RC namespace in rc-theme

* Move 2FA Users model to rc-models

* Remove dependency of RC namespace in rc-2fa

* Remove dependency of RC namespace in rc-action-links

* Add action links in the RC namespace

* Remove dependency of RC namespace in rc-analytics

* Remove dependency of RC namespace in rc-assets

* Add Assets in RC namespace

* Remove dependency of RC namespace in rc-autolinker

* Move autotranslate models to rc-models

* Partial remove dependency of Rc namespace in rc-autotranslate

* Remove dependency of RC namespace in rc-markdown

* Finish of remotion of RC namespace in rc-autotranslate

* Import Autotranslate where it has been used

* Fix lint

* Rename Assets variable to avoid conflicts

* Fix rename Assets

* Remove dependency of RC namespace in rc-blockstack

* Remove RC dependency in bot-helpers

* Remove RC dependency in rc-cas

* Move some functions from tokenpass to channel settings and models

* Move some function from livestream to channel settings

* Remove dependency of RC namespace in rc-channel-settings

* Fix wrong imports

* Remove dependency of RC namespace in rc-channel-mail-messages

* Remove dependency of RC namespace in rc-cloud

*  Remove dependency of RC namespace in rc-colors, cors, crowd and dolphin (#13255)

* Move integrations models to rc-models

* Move composeMessage function to rc-utils

* Move PushNotifications class to push-notifications package

* Import variables to remove dependency of RC namespace

* Import variables to remove RC namespace dependency inside rc-lib/server/lib

* Import variables to remove RC namespace inside rc-lib/server/methods

* Import variables to remove dependency with RC namespace

* Remove duplicated server settings located in rc-lib

* Export function and lib function of rc-lib but keep it inside RC namespace

* Import variables from functions and lib to remove RC namespace dependency

* Remove dependency of RC namespace in rc-sandstorm

* Remove dependency of RC namespace in chatpal-search

* Move CreadentialTokens model to rc-models

* Move getUsernameSuggestion function and method from server/ to rc-lib

* Remove dependency of RC namespace in meteor saml

* Remove dependency of RC namespace in rc-theme

* Move 2FA Users model to rc-models

* Remove dependency of RC namespace in rc-2fa

* Remove dependency of RC namespace in rc-action-links

* Add action links in the RC namespace

* Remove dependency of RC namespace in rc-analytics

* Remove dependency of RC namespace in rc-assets

* Add Assets in RC namespace

* Remove dependency of RC namespace in rc-autolinker

* Move autotranslate models to rc-models

* Partial remove dependency of Rc namespace in rc-autotranslate

* Remove dependency of RC namespace in rc-markdown

* Finish of remotion of RC namespace in rc-autotranslate

* Import Autotranslate where it has been used

* Fix lint

* Rename Assets variable to avoid conflicts

* Fix rename Assets

* Remove dependency of RC namespace in rc-blockstack

* Remove RC dependency in bot-helpers

* Remove RC dependency in rc-cas

* Move some functions from tokenpass to channel settings and models

* Move some function from livestream to channel settings

* Remove dependency of RC namespace in rc-channel-settings

* Fix wrong imports

* Remove dependency of RC namespace in rc-channel-mail-messages

* Remove dependency of RC namespace in rc-cloud

* Remove dependency of RC namespace in rc-colors

* Remove dependency of RC namespace in rc-cors

* Remove dependency of RC namespace in rc-crowd

* Remove dependency of RC namespace in rc-dolphin

*  Remove dependency of RC namespace in rc-emoji-custom and drupal (#13256)

* Move integrations models to rc-models

* Move composeMessage function to rc-utils

* Move PushNotifications class to push-notifications package

* Import variables to remove dependency of RC namespace

* Import variables to remove RC namespace dependency inside rc-lib/server/lib

* Import variables to remove RC namespace inside rc-lib/server/methods

* Import variables to remove dependency with RC namespace

* Remove duplicated server settings located in rc-lib

* Export function and lib function of rc-lib but keep it inside RC namespace

* Import variables from functions and lib to remove RC namespace dependency

* Remove dependency of RC namespace in rc-sandstorm

* Remove dependency of RC namespace in chatpal-search

* Move CreadentialTokens model to rc-models

* Move getUsernameSuggestion function and method from server/ to rc-lib

* Remove dependency of RC namespace in meteor saml

* Remove dependency of RC namespace in rc-theme

* Move 2FA Users model to rc-models

* Remove dependency of RC namespace in rc-2fa

* Remove dependency of RC namespace in rc-action-links

* Add action links in the RC namespace

* Remove dependency of RC namespace in rc-analytics

* Remove dependency of RC namespace in rc-assets

* Add Assets in RC namespace

* Remove dependency of RC namespace in rc-autolinker

* Move autotranslate models to rc-models

* Partial remove dependency of Rc namespace in rc-autotranslate

* Remove dependency of RC namespace in rc-markdown

* Finish of remotion of RC namespace in rc-autotranslate

* Import Autotranslate where it has been used

* Fix lint

* Rename Assets variable to avoid conflicts

* Fix rename Assets

* Remove dependency of RC namespace in rc-blockstack

* Remove RC dependency in bot-helpers

* Remove RC dependency in rc-cas

* Move some functions from tokenpass to channel settings and models

* Move some function from livestream to channel settings

* Remove dependency of RC namespace in rc-channel-settings

* Fix wrong imports

* Remove dependency of RC namespace in rc-channel-mail-messages

* Remove dependency of RC namespace in rc-cloud

* Remove dependency of RC namespace in rc-colors

* Remove dependency of RC namespace in rc-cors

* Remove dependency of RC namespace in rc-crowd

* Remove dependency of RC namespace in rc-dolphin

* Remove dependency of RC namespace in rc-drupal

* Move Emoji custom server and client models to rc-models

* Remove dependency of RC namespace in rc-emoji-custom

* Remove dependency of RC namespace in rc-emojione, error-handler, gh-enterprise and gitlab (#13257)

* Move integrations models to rc-models

* Move composeMessage function to rc-utils

* Move PushNotifications class to push-notifications package

* Import variables to remove dependency of RC namespace

* Import variables to remove RC namespace dependency inside rc-lib/server/lib

* Import variables to remove RC namespace inside rc-lib/server/methods

* Import variables to remove dependency with RC namespace

* Remove duplicated server settings located in rc-lib

* Export function and lib function of rc-lib but keep it inside RC namespace

* Import variables from functions and lib to remove RC namespace dependency

* Remove dependency of RC namespace in rc-sandstorm

* Remove dependency of RC namespace in chatpal-search

* Move CreadentialTokens model to rc-models

* Move getUsernameSuggestion function and method from server/ to rc-lib

* Remove dependency of RC namespace in meteor saml

* Remove dependency of RC namespace in rc-theme

* Move 2FA Users model to rc-models

* Remove dependency of RC namespace in rc-2fa

* Remove dependency of RC namespace in rc-action-links

* Add action links in the RC namespace

* Remove dependency of RC namespace in rc-analytics

* Remove dependency of RC namespace in rc-assets

* Add Assets in RC namespace

* Remove dependency of RC namespace in rc-autolinker

* Move autotranslate models to rc-models

* Partial remove dependency of Rc namespace in rc-autotranslate

* Remove dependency of RC namespace in rc-markdown

* Finish of remotion of RC namespace in rc-autotranslate

* Import Autotranslate where it has been used

* Fix lint

* Rename Assets variable to avoid conflicts

* Fix rename Assets

* Remove dependency of RC namespace in rc-blockstack

* Remove RC dependency in bot-helpers

* Remove RC dependency in rc-cas

* Move some functions from tokenpass to channel settings and models

* Move some function from livestream to channel settings

* Remove dependency of RC namespace in rc-channel-settings

* Fix wrong imports

* Remove dependency of RC namespace in rc-channel-mail-messages

* Remove dependency of RC namespace in rc-cloud

* Remove dependency of RC namespace in rc-colors

* Remove dependency of RC namespace in rc-cors

* Remove dependency of RC namespace in rc-crowd

* Remove dependency of RC namespace in rc-dolphin

* Remove dependency of RC namespace in rc-drupal

* Move Emoji custom server and client models to rc-models

* Remove dependency of RC namespace in rc-emoji-custom

* Remove dependency of RC namespace in rc-emojione

* Remove dependency of RC namespace in rc-error-handler

* Remove dependency of RC namespace in rc-gh-enterprise

* Remove dependency of RC namespace in rc-gitlab

* Remove dependency of RC namespace in rc-google-natural-language, grant, google-vision and highlight-words (#13258)

* Move integrations models to rc-models

* Move composeMessage function to rc-utils

* Move PushNotifications class to push-notifications package

* Import variables to remove dependency of RC namespace

* Import variables to remove RC namespace dependency inside rc-lib/server/lib

* Import variables to remove RC namespace inside rc-lib/server/methods

* Import variables to remove dependency with RC namespace

* Remove duplicated server settings located in rc-lib

* Export function and lib function of rc-lib but keep it inside RC namespace

* Import variables from functions and lib to remove RC namespace dependency

* Remove dependency of RC namespace in rc-sandstorm

* Remove dependency of RC namespace in chatpal-search

* Move CreadentialTokens model to rc-models

* Move getUsernameSuggestion function and method from server/ to rc-lib

* Remove dependency of RC namespace in meteor saml

* Remove dependency of RC namespace in rc-theme

* Move 2FA Users model to rc-models

* Remove dependency of RC namespace in rc-2fa

* Remove dependency of RC namespace in rc-action-links

* Add action links in the RC namespace

* Remove dependency of RC namespace in rc-analytics

* Remove dependency of RC namespace in rc-assets

* Add Assets in RC namespace

* Remove dependency of RC namespace in rc-autolinker

* Move autotranslate models to rc-models

* Partial remove dependency of Rc namespace in rc-autotranslate

* Remove dependency of RC namespace in rc-markdown

* Finish of remotion of RC namespace in rc-autotranslate

* Import Autotranslate where it has been used

* Fix lint

* Rename Assets variable to avoid conflicts

* Fix rename Assets

* Remove dependency of RC namespace in rc-blockstack

* Remove RC dependency in bot-helpers

* Remove RC dependency in rc-cas

* Move some functions from tokenpass to channel settings and models

* Move some function from livestream to channel settings

* Remove dependency of RC namespace in rc-channel-settings

* Fix wrong imports

* Remove dependency of RC namespace in rc-channel-mail-messages

* Remove dependency of RC namespace in rc-cloud

* Remove dependency of RC namespace in rc-colors

* Remove dependency of RC namespace in rc-cors

* Remove dependency of RC namespace in rc-crowd

* Remove dependency of RC namespace in rc-dolphin

* Remove dependency of RC namespace in rc-drupal

* Move Emoji custom server and client models to rc-models

* Remove dependency of RC namespace in rc-emoji-custom

* Remove dependency of RC namespace in rc-emojione

* Remove dependency of RC namespace in rc-error-handler

* Remove dependency of RC namespace in rc-gh-enterprise

* Remove dependency of RC namespace in rc-gitlab

* Remove dependency of RC namespace in rc-google-natural-language

* Remove dependency of RC namespace in rc-grant

* Remove dependency of RC namespace in rc-highlight-words

* Remove dependency of RC namespace in rc-google-vision

* Fix lint

*  Remove dependency of RC namespace in rc-iframe-login and all imports, except hipchat-enterprise (#13259)

* Move integrations models to rc-models

* Move composeMessage function to rc-utils

* Move PushNotifications class to push-notifications package

* Import variables to remove dependency of RC namespace

* Import variables to remove RC namespace dependency inside rc-lib/server/lib

* Import variables to remove RC namespace inside rc-lib/server/methods

* Import variables to remove dependency with RC namespace

* Remove duplicated server settings located in rc-lib

* Export function and lib function of rc-lib but keep it inside RC namespace

* Import variables from functions and lib to remove RC namespace dependency

* Remove dependency of RC namespace in rc-sandstorm

* Remove dependency of RC namespace in chatpal-search

* Move CreadentialTokens model to rc-models

* Move getUsernameSuggestion function and method from server/ to rc-lib

* Remove dependency of RC namespace in meteor saml

* Remove dependency of RC namespace in rc-theme

* Move 2FA Users model to rc-models

* Remove dependency of RC namespace in rc-2fa

* Remove dependency of RC namespace in rc-action-links

* Add action links in the RC namespace

* Remove dependency of RC namespace in rc-analytics

* Remove dependency of RC namespace in rc-assets

* Add Assets in RC namespace

* Remove dependency of RC namespace in rc-autolinker

* Move autotranslate models to rc-models

* Partial remove dependency of Rc namespace in rc-autotranslate

* Remove dependency of RC namespace in rc-markdown

* Finish of remotion of RC namespace in rc-autotranslate

* Import Autotranslate where it has been used

* Fix lint

* Rename Assets variable to avoid conflicts

* Fix rename Assets

* Remove dependency of RC namespace in rc-blockstack

* Remove RC dependency in bot-helpers

* Remove RC dependency in rc-cas

* Move some functions from tokenpass to channel settings and models

* Move some function from livestream to channel settings

* Remove dependency of RC namespace in rc-channel-settings

* Fix wrong imports

* Remove dependency of RC namespace in rc-channel-mail-messages

* Remove dependency of RC namespace in rc-cloud

* Remove dependency of RC namespace in rc-colors

* Remove dependency of RC namespace in rc-cors

* Remove dependency of RC namespace in rc-crowd

* Remove dependency of RC namespace in rc-dolphin

* Remove dependency of RC namespace in rc-drupal

* Move Emoji custom server and client models to rc-models

* Remove dependency of RC namespace in rc-emoji-custom

* Remove dependency of RC namespace in rc-emojione

* Remove dependency of RC namespace in rc-error-handler

* Remove dependency of RC namespace in rc-gh-enterprise

* Remove dependency of RC namespace in rc-gitlab

* Remove dependency of RC namespace in rc-google-natural-language

* Remove dependency of RC namespace in rc-grant

* Remove dependency of RC namespace in rc-highlight-words

* Remove dependency of RC namespace in rc-google-vision

* Fix lint

* Remove dependency of RC namespace in rc-iframe-login

* Remove dependency of RC namespace in all importes, except hipchat-enterprise

* Move RestAPI client to rc-api package

* Remove dependency of RC namespace in rc-api/helpers and api.js

* Remove dependency of RC namespace on half of api files

* Partial Remove dependency of RC namespace in rc-api

* import API where it was being used by the RC namespace

* Move processWebhookMessage function to rc-lib package

* Remove API from RC namespace and import missing function that was being used with namespace

* Remove dependency of RC namespace in rc-graphql

* Fix import from wrong package

* Remove dependency of RC namespace in rc-importer

* Remove dependency of RC namespace in rc-issue-links

* Remove dependency of RC namespace in rc-katex

* Move templateVarHandler fn to rc-utils

* Remove dependency of RC namespace in rc-ldap

* Remove dependency of RC namespace in rc-livestream

* Remove dependency of RC namespace in rc-mail-messages

* Remove dependency of RC namespace in rc-mapview

* Remove dependency of RC namespace in rc-mentions

* Remove dependency of RC namespace in rc-mentions-flextab

* Remove depedency of RC namespace in rc-message-attachements

* Remove dependdency of RC namespace in rc-message-mark-as-unread

* Remove dependency of RC namespace in rc-message-pin

* Fix templateVarHandler that was in wrong folder

* Remove namespace in the new livechat endpoint

* Remove dependency of RC namespace in rc-message-snippet

* Remove dependency of RC namespace in rc-message-star

* Remove dependency of RC namespace in rc-oauth2

* Remove dependency of RC namespace in rc-oembed

* Remove dependency of RC namespace in rc-otr

* Remove dependency of RC namespace in rc-reactions

* Remove dependency of RC namespace in rc-retention-policy

* Remove dependency of RC namespace in rc-earch

* Remove dependency of RC namespace in rc-setup-wizard

* Remove dependency of RC namespace in rc-slackbridge

* Remove dependency of Rc namespace in slashcommands-asciiarts

* Remove depedency of RC namespace in rc-slash-archiveroom

* Remove dependency of RC namespace in rc-slash-create

* Remove dependency of RC namespace in rc-slash-help

* Remove dependency of RC namespace in rc-slash-hide

* Remove dependency of RC namespace in rc-slash-invite

* Remove dependency of RC namespace in rc-slash-inviteall

* Remove dependency of RC namespace in rc-slash-join

* Remove dependency of RC namespace in rc-slash-kick

* Remove dependency of RC namespace in rc-slash-leave

* Remove dependency of RC namespace in rc-slash-me

* Remove dependency of RC namespace in rc-slash-msg

* Remove dependency of RC namespace in rc-slash-mute

* Remove dependency of RC namespace in rc-slash-open

* Remove dependency of RC namespace in rc-slash-topic

* Remove dependency of RC namespace in rc-slash-unarchiveroom

* Remove dependency of RC namespace in rc-smarsh-connector

* Remove dependency of RC namespace in rc-sms

* Remove dependency of RC namespace in rc-spotify

* Remove dependency of RC namespace in rc-statistics

* Move tokenpass models methods to rc-models

* Remove dependency of RC namespace in rc-tokenpass

* import tokenpass inside rc-lib

* Remove dependency of RC namespace in rc-ui

* Move webdavAccounts models to rc-model

* Remove dependency of RC namespace in rc-ui-account

* Remove dependency of RC namespace in rc-ui-admin

* Remove dependency of RC namespace in rc-ui-clean-history

* Remove dependency of RC namespace in rc-ui-flextab

* Remove dependency of RC namespace in rc-ui-login

* Remove dependency of RC namespace in rc-ui-master

* Remove dependency of RC namespace in rc-ui-message

* REmove dependency of RC namespace in rc-user-data-download

* Remove dependency of RC namespace in rc-version-check

* Remove dependency of RC namespace in rc-videobridge

* Remove dependency of RC namespace in rc-webdav

* Remove dependency of RC namespace in rc-wordpress

* Remove some RC namespace use in chatpal-search

* Remove dependency of RC namespace in rc-irc

* Remove dependency of RC namespace in livechat/client

* Move methods in common livechat models to rc-models

* Remove dependency of RC namespace in rc-livechat/server/models

* Remove LIvechat global variable from RC namespace

* Remove dependency of RC namespace in rc-livechat/imports, lib, server/api, server/hooks and server/lib

* Remove dependency of RC namespace in rc-livechat/server/methods

* Fix duplicated import

* Remove unused import

* Remove dependency of RC namespace in rc-livechat/server/publications

* MOve rc-livechat server models to rc-models

* Change imports of livechat server models to rc-models package

*  Remove dependency of RC namespace in rc-api/helpers and api.js (#13273)

* Move RestAPI client to rc-api package

* Remove dependency of RC namespace in rc-api/helpers and api.js

*  Remove dependency of RC namespace on half of api files (#13275)

* Move RestAPI client to rc-api package

* Remove dependency of RC namespace in rc-api/helpers and api.js

* Remove dependency of RC namespace on half of api files

* Remove dependency of RC namespace in rc-integrations

* Import missed functions in rc-irc

* Remove dependency of RC namespace in rc-hipchat-enterprise-importer

* Partial Remove dependency of RC namespace in rc-api (#13277)

* Move RestAPI client to rc-api package

* Remove dependency of RC namespace in rc-api/helpers and api.js

* Remove dependency of RC namespace on half of api files

* Partial Remove dependency of RC namespace in rc-api

* Remove dependency of RC namespace in root client folder

* Remove dependency of RC namespace in imports/message-read-receipt

* Remove dependency of RC namespace in imports/personal-access-tokens

* Remove dependency of RC namespace in rc-api (#13278)

* Move RestAPI client to rc-api package

* Remove dependency of RC namespace in rc-api/helpers and api.js

* Remove dependency of RC namespace on half of api files

* Partial Remove dependency of RC namespace in rc-api

* import API where it was being used by the RC namespace

* Move processWebhookMessage function to rc-lib package

* Remove API from RC namespace and import missing function that was being used with namespace

* Remove namespace in the new livechat endpoint

*  Remove dependency of RC namespace in rc-graphql (#13279)

* Move RestAPI client to rc-api package

* Remove dependency of RC namespace in rc-api/helpers and api.js

* Remove dependency of RC namespace on half of api files

* Partial Remove dependency of RC namespace in rc-api

* import API where it was being used by the RC namespace

* Move processWebhookMessage function to rc-lib package

* Remove API from RC namespace and import missing function that was being used with namespace

* Remove dependency of RC namespace in rc-graphql

* Fix import from wrong package

* Remove namespace in the new livechat endpoint

* Remove dependency of RC namespace in root server folder - step 1

* Remove dependency of RC namespace in rc-importer (#13280)

* Move RestAPI client to rc-api package

* Remove dependency of RC namespace in rc-api/helpers and api.js

* Remove dependency of RC namespace on half of api files

* Partial Remove dependency of RC namespace in rc-api

* import API where it was being used by the RC namespace

* Move processWebhookMessage function to rc-lib package

* Remove API from RC namespace and import missing function that was being used with namespace

* Remove dependency of RC namespace in rc-graphql

* Fix import from wrong package

* Remove dependency of RC namespace in rc-importer

* Remove namespace in the new livechat endpoint

*  Remove dependency of RC namespace in rc-ldap, katex and issue-links (#13281)

* Move RestAPI client to rc-api package

* Remove dependency of RC namespace in rc-api/helpers and api.js

* Remove dependency of RC namespace on half of api files

* Partial Remove dependency of RC namespace in rc-api

* import API where it was being used by the RC namespace

* Move processWebhookMessage function to rc-lib package

* Remove API from RC namespace and import missing function that was being used with namespace

* Remove dependency of RC namespace in rc-graphql

* Fix import from wrong package

* Remove dependency of RC namespace in rc-importer

* Remove dependency of RC namespace in rc-issue-links

* Remove dependency of RC namespace in rc-katex

* Move templateVarHandler fn to rc-utils

* Remove dependency of RC namespace in rc-ldap

* Fix templateVarHandler that was in wrong folder

* Remove namespace in the new livechat endpoint

*  Remove dependency of RC namespace in rc-livestream and rc-mail-messages (#13320)

* Move RestAPI client to rc-api package

* Remove dependency of RC namespace in rc-api/helpers and api.js

* Remove dependency of RC namespace on half of api files

* Partial Remove dependency of RC namespace in rc-api

* import API where it was being used by the RC namespace

* Move processWebhookMessage function to rc-lib package

* Remove API from RC namespace and import missing function that was being used with namespace

* Remove dependency of RC namespace in rc-graphql

* Fix import from wrong package

* Remove dependency of RC namespace in rc-importer

* Remove dependency of RC namespace in rc-issue-links

* Remove dependency of RC namespace in rc-katex

* Move templateVarHandler fn to rc-utils

* Remove dependency of RC namespace in rc-ldap

* Remove dependency of RC namespace in rc-livestream

* Remove dependency of RC namespace in rc-mail-messages

* Fix templateVarHandler that was in wrong folder

* Remove namespace in the new livechat endpoint
pull/13400/head^2
Marcos Spessatto Defendi 6 years ago committed by Rodrigo Nascimento
parent 3f3f02c96b
commit b862ff5767
  1. 9
      server/configuration/accounts_meld.js
  2. 50
      server/lib/accounts.js
  3. 40
      server/lib/cordova.js
  4. 7
      server/lib/roomFiles.js
  5. 9
      server/methods/OEmbedCacheCleanup.js
  6. 24
      server/methods/addAllUserToRoom.js
  7. 20
      server/methods/addRoomLeader.js
  8. 20
      server/methods/addRoomModerator.js
  9. 20
      server/methods/addRoomOwner.js
  10. 7
      server/methods/afterVerifyEmail.js
  11. 14
      server/methods/browseChannels.js
  12. 11
      server/methods/canAccessRoom.js
  13. 32
      server/methods/channelsList.js
  14. 27
      server/methods/createDirectMessage.js
  15. 3
      server/methods/deleteFileMessage.js
  16. 9
      server/methods/deleteUser.js
  17. 15
      server/methods/eraseRoom.js
  18. 15
      server/methods/getAvatarSuggestion.js
  19. 6
      server/methods/getRoomIdByNameOrId.js
  20. 8
      server/methods/getRoomNameById.js
  21. 3
      server/methods/getTotalChannels.js
  22. 8
      server/methods/getUsersOfRoom.js
  23. 3
      server/methods/hideRoom.js
  24. 8
      server/methods/ignoreUser.js
  25. 16
      server/methods/loadHistory.js
  26. 6
      server/methods/loadMissedMessages.js
  27. 11
      server/methods/loadNextMessages.js
  28. 13
      server/methods/loadSurroundingMessages.js
  29. 3
      server/methods/logoutCleanUp.js
  30. 12
      server/methods/messageSearch.js
  31. 8
      server/methods/migrate.js
  32. 16
      server/methods/muteUserInRoom.js
  33. 3
      server/methods/openRoom.js
  34. 5
      server/methods/readMessages.js
  35. 28
      server/methods/registerUser.js

@ -1,5 +1,6 @@
import _ from 'underscore'; import _ from 'underscore';
import { Accounts } from 'meteor/accounts-base'; import { Accounts } from 'meteor/accounts-base';
import { Users } from 'meteor/rocketchat:models';
const orig_updateOrCreateUserFromExternalService = Accounts.updateOrCreateUserFromExternalService; const orig_updateOrCreateUserFromExternalService = Accounts.updateOrCreateUserFromExternalService;
@ -31,7 +32,7 @@ Accounts.updateOrCreateUserFromExternalService = function(serviceName, serviceDa
} }
if (serviceData.email) { if (serviceData.email) {
const user = RocketChat.models.Users.findOneByEmailAddress(serviceData.email); const user = Users.findOneByEmailAddress(serviceData.email);
if (user != null) { if (user != null) {
const findQuery = { const findQuery = {
address: serviceData.email, address: serviceData.email,
@ -39,11 +40,11 @@ Accounts.updateOrCreateUserFromExternalService = function(serviceName, serviceDa
}; };
if (!_.findWhere(user.emails, findQuery)) { if (!_.findWhere(user.emails, findQuery)) {
RocketChat.models.Users.resetPasswordAndSetRequirePasswordChange(user._id, true, 'This_email_has_already_been_used_and_has_not_been_verified__Please_change_your_password'); Users.resetPasswordAndSetRequirePasswordChange(user._id, true, 'This_email_has_already_been_used_and_has_not_been_verified__Please_change_your_password');
} }
RocketChat.models.Users.setServiceId(user._id, serviceName, serviceData.id); Users.setServiceId(user._id, serviceName, serviceData.id);
RocketChat.models.Users.setEmailVerified(user._id, serviceData.email); Users.setEmailVerified(user._id, serviceData.email);
} }
} }

@ -5,22 +5,26 @@ import { TAPi18n } from 'meteor/tap:i18n';
import _ from 'underscore'; import _ from 'underscore';
import s from 'underscore.string'; import s from 'underscore.string';
import * as Mailer from 'meteor/rocketchat:mailer'; import * as Mailer from 'meteor/rocketchat:mailer';
import { settings } from 'meteor/rocketchat:settings';
import { callbacks } from 'meteor/rocketchat:callbacks';
import { Roles, Users, Settings } from 'meteor/rocketchat:models';
import { addUserRoles } from 'meteor/rocketchat:authorization';
const accountsConfig = { const accountsConfig = {
forbidClientAccountCreation: true, forbidClientAccountCreation: true,
loginExpirationInDays: RocketChat.settings.get('Accounts_LoginExpiration'), loginExpirationInDays: settings.get('Accounts_LoginExpiration'),
}; };
Accounts.config(accountsConfig); Accounts.config(accountsConfig);
Accounts.emailTemplates.siteName = RocketChat.settings.get('Site_Name'); Accounts.emailTemplates.siteName = settings.get('Site_Name');
Accounts.emailTemplates.from = `${ RocketChat.settings.get('Site_Name') } <${ RocketChat.settings.get('From_Email') }>`; Accounts.emailTemplates.from = `${ settings.get('Site_Name') } <${ settings.get('From_Email') }>`;
Accounts.emailTemplates.userToActivate = { Accounts.emailTemplates.userToActivate = {
subject() { subject() {
const subject = TAPi18n.__('Accounts_Admin_Email_Approval_Needed_Subject_Default'); const subject = TAPi18n.__('Accounts_Admin_Email_Approval_Needed_Subject_Default');
const siteName = RocketChat.settings.get('Site_Name'); const siteName = settings.get('Site_Name');
return `[${ siteName }] ${ subject }`; return `[${ siteName }] ${ subject }`;
}, },
@ -41,7 +45,7 @@ Accounts.emailTemplates.userActivated = {
const activated = username ? 'Activated' : 'Approved'; const activated = username ? 'Activated' : 'Approved';
const action = active ? activated : 'Deactivated'; const action = active ? activated : 'Deactivated';
const subject = `Accounts_Email_${ action }_Subject`; const subject = `Accounts_Email_${ action }_Subject`;
const siteName = RocketChat.settings.get('Site_Name'); const siteName = settings.get('Site_Name');
return `[${ siteName }] ${ TAPi18n.__(subject) }`; return `[${ siteName }] ${ TAPi18n.__(subject) }`;
}, },
@ -80,7 +84,7 @@ Accounts.urls.resetPassword = function(token) {
Accounts.emailTemplates.resetPassword.html = Accounts.emailTemplates.resetPassword.text; Accounts.emailTemplates.resetPassword.html = Accounts.emailTemplates.resetPassword.text;
Accounts.emailTemplates.enrollAccount.subject = function(user) { Accounts.emailTemplates.enrollAccount.subject = function(user) {
const subject = RocketChat.settings.get('Accounts_Enrollment_Email_Subject'); const subject = settings.get('Accounts_Enrollment_Email_Subject');
return Mailer.replace(subject, user); return Mailer.replace(subject, user);
}; };
@ -92,10 +96,10 @@ Accounts.emailTemplates.enrollAccount.html = function(user = {}/* , url*/) {
}; };
Accounts.onCreateUser(function(options, user = {}) { Accounts.onCreateUser(function(options, user = {}) {
RocketChat.callbacks.run('beforeCreateUser', options, user); callbacks.run('beforeCreateUser', options, user);
user.status = 'offline'; user.status = 'offline';
user.active = !RocketChat.settings.get('Accounts_ManuallyApproveNewUsers'); user.active = !settings.get('Accounts_ManuallyApproveNewUsers');
if (!user.name) { if (!user.name) {
if (options.profile) { if (options.profile) {
@ -129,7 +133,7 @@ Accounts.onCreateUser(function(options, user = {}) {
if (!user.active) { if (!user.active) {
const destinations = []; const destinations = [];
RocketChat.models.Roles.findUsersInRole('admin').forEach((adminUser) => { Roles.findUsersInRole('admin').forEach((adminUser) => {
if (Array.isArray(adminUser.emails)) { if (Array.isArray(adminUser.emails)) {
adminUser.emails.forEach((email) => { adminUser.emails.forEach((email) => {
destinations.push(`${ adminUser.name }<${ email.address }>`); destinations.push(`${ adminUser.name }<${ email.address }>`);
@ -139,7 +143,7 @@ Accounts.onCreateUser(function(options, user = {}) {
const email = { const email = {
to: destinations, to: destinations,
from: RocketChat.settings.get('From_Email'), from: settings.get('From_Email'),
subject: Accounts.emailTemplates.userToActivate.subject(), subject: Accounts.emailTemplates.userToActivate.subject(),
html: Accounts.emailTemplates.userToActivate.html(options), html: Accounts.emailTemplates.userToActivate.html(options),
}; };
@ -160,7 +164,7 @@ Accounts.insertUserDoc = _.wrap(Accounts.insertUserDoc, function(insertUserDoc,
delete user.globalRoles; delete user.globalRoles;
if (user.services && !user.services.password) { if (user.services && !user.services.password) {
const defaultAuthServiceRoles = String(RocketChat.settings.get('Accounts_Registration_AuthenticationServices_Default_Roles')).split(','); const defaultAuthServiceRoles = String(settings.get('Accounts_Registration_AuthenticationServices_Default_Roles')).split(',');
if (defaultAuthServiceRoles.length > 0) { if (defaultAuthServiceRoles.length > 0) {
roles = roles.concat(defaultAuthServiceRoles.map((s) => s.trim())); roles = roles.concat(defaultAuthServiceRoles.map((s) => s.trim()));
} }
@ -185,13 +189,13 @@ Accounts.insertUserDoc = _.wrap(Accounts.insertUserDoc, function(insertUserDoc,
if (user.type !== 'visitor') { if (user.type !== 'visitor') {
Meteor.defer(function() { Meteor.defer(function() {
return RocketChat.callbacks.run('afterCreateUser', user); return callbacks.run('afterCreateUser', user);
}); });
} }
} }
if (roles.length === 0) { if (roles.length === 0) {
const hasAdmin = RocketChat.models.Users.findOne({ const hasAdmin = Users.findOne({
roles: 'admin', roles: 'admin',
type: 'user', type: 'user',
}, { }, {
@ -204,19 +208,19 @@ Accounts.insertUserDoc = _.wrap(Accounts.insertUserDoc, function(insertUserDoc,
roles.push('user'); roles.push('user');
} else { } else {
roles.push('admin'); roles.push('admin');
if (RocketChat.settings.get('Show_Setup_Wizard') === 'pending') { if (settings.get('Show_Setup_Wizard') === 'pending') {
RocketChat.models.Settings.updateValueById('Show_Setup_Wizard', 'in_progress'); Settings.updateValueById('Show_Setup_Wizard', 'in_progress');
} }
} }
} }
RocketChat.authz.addUserRoles(_id, roles); addUserRoles(_id, roles);
return _id; return _id;
}); });
Accounts.validateLoginAttempt(function(login) { Accounts.validateLoginAttempt(function(login) {
login = RocketChat.callbacks.run('beforeValidateLogin', login); login = callbacks.run('beforeValidateLogin', login);
if (login.allowed !== true) { if (login.allowed !== true) {
return login.allowed; return login.allowed;
@ -238,18 +242,18 @@ Accounts.validateLoginAttempt(function(login) {
}); });
} }
if (login.user.roles.includes('admin') === false && login.type === 'password' && RocketChat.settings.get('Accounts_EmailVerification') === true) { if (login.user.roles.includes('admin') === false && login.type === 'password' && settings.get('Accounts_EmailVerification') === true) {
const validEmail = login.user.emails.filter((email) => email.verified === true); const validEmail = login.user.emails.filter((email) => email.verified === true);
if (validEmail.length === 0) { if (validEmail.length === 0) {
throw new Meteor.Error('error-invalid-email', 'Invalid email __email__'); throw new Meteor.Error('error-invalid-email', 'Invalid email __email__');
} }
} }
login = RocketChat.callbacks.run('onValidateLogin', login); login = callbacks.run('onValidateLogin', login);
RocketChat.models.Users.updateLastLoginById(login.user._id); Users.updateLastLoginById(login.user._id);
Meteor.defer(function() { Meteor.defer(function() {
return RocketChat.callbacks.run('afterValidateLogin', login); return callbacks.run('afterValidateLogin', login);
}); });
return true; return true;
@ -260,7 +264,7 @@ Accounts.validateNewUser(function(user) {
return true; return true;
} }
if (RocketChat.settings.get('Accounts_Registration_AuthenticationServices_Enabled') === false && RocketChat.settings.get('LDAP_Enable') === false && !(user.services && user.services.password)) { if (settings.get('Accounts_Registration_AuthenticationServices_Enabled') === false && settings.get('LDAP_Enable') === false && !(user.services && user.services.password)) {
throw new Meteor.Error('registration-disabled-authentication-services', 'User registration is disabled for authentication services'); throw new Meteor.Error('registration-disabled-authentication-services', 'User registration is disabled for authentication services');
} }
@ -272,7 +276,7 @@ Accounts.validateNewUser(function(user) {
return true; return true;
} }
let domainWhiteList = RocketChat.settings.get('Accounts_AllowedDomainsList'); let domainWhiteList = settings.get('Accounts_AllowedDomainsList');
if (_.isEmpty(s.trim(domainWhiteList))) { if (_.isEmpty(s.trim(domainWhiteList))) {
return true; return true;
} }

@ -4,6 +4,8 @@ import { TAPi18n } from 'meteor/tap:i18n';
import { SystemLogger } from 'meteor/rocketchat:logger'; import { SystemLogger } from 'meteor/rocketchat:logger';
import { getWorkspaceAccessToken } from 'meteor/rocketchat:cloud'; import { getWorkspaceAccessToken } from 'meteor/rocketchat:cloud';
import { Push } from 'meteor/rocketchat:push'; import { Push } from 'meteor/rocketchat:push';
import { hasRole } from 'meteor/rocketchat:authorization';
import { settings } from 'meteor/rocketchat:settings';
Meteor.methods({ Meteor.methods({
@ -20,7 +22,7 @@ Meteor.methods({
}); });
} }
if (!RocketChat.authz.hasRole(user._id, 'admin')) { if (!hasRole(user._id, 'admin')) {
throw new Meteor.Error('error-not-allowed', 'Not allowed', { throw new Meteor.Error('error-not-allowed', 'Not allowed', {
method: 'push_test', method: 'push_test',
}); });
@ -92,7 +94,7 @@ function sendPush(service, token, options, tries = 0) {
data.headers.Authorization = `Bearer ${ workspaceAccesstoken }`; data.headers.Authorization = `Bearer ${ workspaceAccesstoken }`;
} }
return HTTP.post(`${ RocketChat.settings.get('Push_gateway') }/push/${ service }/send`, data, function(error, response) { return HTTP.post(`${ settings.get('Push_gateway') }/push/${ service }/send`, data, function(error, response) {
if (response && response.statusCode === 406) { if (response && response.statusCode === 406) {
console.log('removing push token', token); console.log('removing push token', token);
Push.appCollection.remove({ Push.appCollection.remove({
@ -124,38 +126,38 @@ function sendPush(service, token, options, tries = 0) {
} }
function configurePush() { function configurePush() {
if (RocketChat.settings.get('Push_debug')) { if (settings.get('Push_debug')) {
Push.debug = true; Push.debug = true;
console.log('Push: configuring...'); console.log('Push: configuring...');
} }
if (RocketChat.settings.get('Push_enable') === true) { if (settings.get('Push_enable') === true) {
Push.allow({ Push.allow({
send(userId/* , notification*/) { send(userId/* , notification*/) {
return RocketChat.authz.hasRole(userId, 'admin'); return hasRole(userId, 'admin');
}, },
}); });
let apn; let apn;
let gcm; let gcm;
if (RocketChat.settings.get('Push_enable_gateway') === false) { if (settings.get('Push_enable_gateway') === false) {
gcm = { gcm = {
apiKey: RocketChat.settings.get('Push_gcm_api_key'), apiKey: settings.get('Push_gcm_api_key'),
projectNumber: RocketChat.settings.get('Push_gcm_project_number'), projectNumber: settings.get('Push_gcm_project_number'),
}; };
apn = { apn = {
passphrase: RocketChat.settings.get('Push_apn_passphrase'), passphrase: settings.get('Push_apn_passphrase'),
keyData: RocketChat.settings.get('Push_apn_key'), keyData: settings.get('Push_apn_key'),
certData: RocketChat.settings.get('Push_apn_cert'), certData: settings.get('Push_apn_cert'),
}; };
if (RocketChat.settings.get('Push_production') !== true) { if (settings.get('Push_production') !== true) {
apn = { apn = {
passphrase: RocketChat.settings.get('Push_apn_dev_passphrase'), passphrase: settings.get('Push_apn_dev_passphrase'),
keyData: RocketChat.settings.get('Push_apn_dev_key'), keyData: settings.get('Push_apn_dev_key'),
certData: RocketChat.settings.get('Push_apn_dev_cert'), certData: settings.get('Push_apn_dev_cert'),
gateway: 'gateway.sandbox.push.apple.com', gateway: 'gateway.sandbox.push.apple.com',
}; };
} }
@ -172,12 +174,12 @@ function configurePush() {
Push.Configure({ Push.Configure({
apn, apn,
gcm, gcm,
production: RocketChat.settings.get('Push_production'), production: settings.get('Push_production'),
sendInterval: 5000, sendInterval: 5000,
sendBatchSize: 10, sendBatchSize: 10,
}); });
if (RocketChat.settings.get('Push_enable_gateway') === true) { if (settings.get('Push_enable_gateway') === true) {
Push.serverSend = function(options = { badge: 0 }) { Push.serverSend = function(options = { badge: 0 }) {
if (options.from !== String(options.from)) { if (options.from !== String(options.from)) {
throw new Error('Push.send: option "from" not a string'); throw new Error('Push.send: option "from" not a string');
@ -188,7 +190,7 @@ function configurePush() {
if (options.text !== String(options.text)) { if (options.text !== String(options.text)) {
throw new Error('Push.send: option "text" not a string'); throw new Error('Push.send: option "text" not a string');
} }
if (RocketChat.settings.get('Push_debug')) { if (settings.get('Push_debug')) {
console.log(`Push: send message "${ options.title }" via query`, options.query); console.log(`Push: send message "${ options.title }" via query`, options.query);
} }
@ -207,7 +209,7 @@ function configurePush() {
}; };
return Push.appCollection.find(query).forEach((app) => { return Push.appCollection.find(query).forEach((app) => {
if (RocketChat.settings.get('Push_debug')) { if (settings.get('Push_debug')) {
console.log('Push: send to token', app.token); console.log('Push: send to token', app.token);
} }

@ -1,4 +1,5 @@
import { Meteor } from 'meteor/meteor'; import { Meteor } from 'meteor/meteor';
import { Users, Uploads } from 'meteor/rocketchat:models';
export const roomFiles = (pub, { rid, searchText, limit = 50 }) => { export const roomFiles = (pub, { rid, searchText, limit = 50 }) => {
if (!pub.userId) { if (!pub.userId) {
@ -9,14 +10,14 @@ export const roomFiles = (pub, { rid, searchText, limit = 50 }) => {
return this.ready(); return this.ready();
} }
const cursorFileListHandle = RocketChat.models.Uploads.findNotHiddenFilesOfRoom(rid, searchText, limit).observeChanges({ const cursorFileListHandle = Uploads.findNotHiddenFilesOfRoom(rid, searchText, limit).observeChanges({
added(_id, record) { added(_id, record) {
const { username, name } = record.userId ? RocketChat.models.Users.findOneById(record.userId) : {}; const { username, name } = record.userId ? Users.findOneById(record.userId) : {};
return pub.added('room_files', _id, { ...record, user: { username, name } }); return pub.added('room_files', _id, { ...record, user: { username, name } });
}, },
changed(_id, recordChanges) { changed(_id, recordChanges) {
if (!recordChanges.hasOwnProperty('user') && recordChanges.userId) { if (!recordChanges.hasOwnProperty('user') && recordChanges.userId) {
recordChanges.user = RocketChat.models.Users.findOneById(recordChanges.userId); recordChanges.user = Users.findOneById(recordChanges.userId);
} }
return pub.changed('room_files', _id, recordChanges); return pub.changed('room_files', _id, recordChanges);
}, },

@ -1,17 +1,20 @@
import { Meteor } from 'meteor/meteor'; import { Meteor } from 'meteor/meteor';
import { OEmbedCache } from 'meteor/rocketchat:models';
import { settings } from 'meteor/rocketchat:settings';
import { hasRole } from 'meteor/rocketchat:authorization';
Meteor.methods({ Meteor.methods({
OEmbedCacheCleanup() { OEmbedCacheCleanup() {
if (Meteor.userId() && !RocketChat.authz.hasRole(Meteor.userId(), 'admin')) { if (Meteor.userId() && !hasRole(Meteor.userId(), 'admin')) {
throw new Meteor.Error('error-not-allowed', 'Not allowed', { throw new Meteor.Error('error-not-allowed', 'Not allowed', {
method: 'OEmbedCacheCleanup', method: 'OEmbedCacheCleanup',
}); });
} }
const date = new Date(); const date = new Date();
const expirationDays = RocketChat.settings.get('API_EmbedCacheExpirationDays'); const expirationDays = settings.get('API_EmbedCacheExpirationDays');
date.setDate(date.getDate() - expirationDays); date.setDate(date.getDate() - expirationDays);
RocketChat.models.OEmbedCache.removeAfterDate(date); OEmbedCache.removeAfterDate(date);
return { return {
message: 'cache_cleared', message: 'cache_cleared',
}; };

@ -1,5 +1,9 @@
import { Meteor } from 'meteor/meteor'; import { Meteor } from 'meteor/meteor';
import { check } from 'meteor/check'; import { check } from 'meteor/check';
import { hasRole } from 'meteor/rocketchat:authorization';
import { Users, Rooms, Subscriptions, Messages } from 'meteor/rocketchat:models';
import { settings } from 'meteor/rocketchat:settings';
import { callbacks } from 'meteor/rocketchat:callbacks';
Meteor.methods({ Meteor.methods({
addAllUserToRoom(rid, activeUsersOnly = false) { addAllUserToRoom(rid, activeUsersOnly = false) {
@ -7,15 +11,15 @@ Meteor.methods({
check (rid, String); check (rid, String);
check (activeUsersOnly, Boolean); check (activeUsersOnly, Boolean);
if (RocketChat.authz.hasRole(this.userId, 'admin') === true) { if (hasRole(this.userId, 'admin') === true) {
const userCount = RocketChat.models.Users.find().count(); const userCount = Users.find().count();
if (userCount > RocketChat.settings.get('API_User_Limit')) { if (userCount > settings.get('API_User_Limit')) {
throw new Meteor.Error('error-user-limit-exceeded', 'User Limit Exceeded', { throw new Meteor.Error('error-user-limit-exceeded', 'User Limit Exceeded', {
method: 'addAllToRoom', method: 'addAllToRoom',
}); });
} }
const room = RocketChat.models.Rooms.findOneById(rid); const room = Rooms.findOneById(rid);
if (room == null) { if (room == null) {
throw new Meteor.Error('error-invalid-room', 'Invalid room', { throw new Meteor.Error('error-invalid-room', 'Invalid room', {
method: 'addAllToRoom', method: 'addAllToRoom',
@ -27,15 +31,15 @@ Meteor.methods({
userFilter.active = true; userFilter.active = true;
} }
const users = RocketChat.models.Users.find(userFilter).fetch(); const users = Users.find(userFilter).fetch();
const now = new Date(); const now = new Date();
users.forEach(function(user) { users.forEach(function(user) {
const subscription = RocketChat.models.Subscriptions.findOneByRoomIdAndUserId(rid, user._id); const subscription = Subscriptions.findOneByRoomIdAndUserId(rid, user._id);
if (subscription != null) { if (subscription != null) {
return; return;
} }
RocketChat.callbacks.run('beforeJoinRoom', user, room); callbacks.run('beforeJoinRoom', user, room);
RocketChat.models.Subscriptions.createWithRoomAndUser(room, user, { Subscriptions.createWithRoomAndUser(room, user, {
ts: now, ts: now,
open: true, open: true,
alert: true, alert: true,
@ -43,11 +47,11 @@ Meteor.methods({
userMentions: 1, userMentions: 1,
groupMentions: 0, groupMentions: 0,
}); });
RocketChat.models.Messages.createUserJoinWithRoomIdAndUser(rid, user, { Messages.createUserJoinWithRoomIdAndUser(rid, user, {
ts: now, ts: now,
}); });
Meteor.defer(function() {}); Meteor.defer(function() {});
return RocketChat.callbacks.run('afterJoinRoom', user, room); return callbacks.run('afterJoinRoom', user, room);
}); });
return true; return true;
} else { } else {

@ -1,5 +1,9 @@
import { Meteor } from 'meteor/meteor'; import { Meteor } from 'meteor/meteor';
import { check } from 'meteor/check'; import { check } from 'meteor/check';
import { hasPermission } from 'meteor/rocketchat:authorization';
import { Users, Subscriptions, Messages } from 'meteor/rocketchat:models';
import { settings } from 'meteor/rocketchat:settings';
import { Notifications } from 'meteor/rocketchat:notifications';
Meteor.methods({ Meteor.methods({
addRoomLeader(rid, userId) { addRoomLeader(rid, userId) {
@ -12,13 +16,13 @@ Meteor.methods({
}); });
} }
if (!RocketChat.authz.hasPermission(Meteor.userId(), 'set-leader', rid)) { if (!hasPermission(Meteor.userId(), 'set-leader', rid)) {
throw new Meteor.Error('error-not-allowed', 'Not allowed', { throw new Meteor.Error('error-not-allowed', 'Not allowed', {
method: 'addRoomLeader', method: 'addRoomLeader',
}); });
} }
const user = RocketChat.models.Users.findOneById(userId); const user = Users.findOneById(userId);
if (!user || !user.username) { if (!user || !user.username) {
throw new Meteor.Error('error-invalid-user', 'Invalid user', { throw new Meteor.Error('error-invalid-user', 'Invalid user', {
@ -26,7 +30,7 @@ Meteor.methods({
}); });
} }
const subscription = RocketChat.models.Subscriptions.findOneByRoomIdAndUserId(rid, user._id); const subscription = Subscriptions.findOneByRoomIdAndUserId(rid, user._id);
if (!subscription) { if (!subscription) {
throw new Meteor.Error('error-user-not-in-room', 'User is not in this room', { throw new Meteor.Error('error-user-not-in-room', 'User is not in this room', {
@ -40,11 +44,11 @@ Meteor.methods({
}); });
} }
RocketChat.models.Subscriptions.addRoleById(subscription._id, 'leader'); Subscriptions.addRoleById(subscription._id, 'leader');
const fromUser = RocketChat.models.Users.findOneById(Meteor.userId()); const fromUser = Users.findOneById(Meteor.userId());
RocketChat.models.Messages.createSubscriptionRoleAddedWithRoomIdAndUser(rid, user, { Messages.createSubscriptionRoleAddedWithRoomIdAndUser(rid, user, {
u: { u: {
_id: fromUser._id, _id: fromUser._id,
username: fromUser.username, username: fromUser.username,
@ -52,8 +56,8 @@ Meteor.methods({
role: 'leader', role: 'leader',
}); });
if (RocketChat.settings.get('UI_DisplayRoles')) { if (settings.get('UI_DisplayRoles')) {
RocketChat.Notifications.notifyLogged('roles-change', { Notifications.notifyLogged('roles-change', {
type: 'added', type: 'added',
_id: 'leader', _id: 'leader',
u: { u: {

@ -1,5 +1,9 @@
import { Meteor } from 'meteor/meteor'; import { Meteor } from 'meteor/meteor';
import { check } from 'meteor/check'; import { check } from 'meteor/check';
import { hasPermission } from 'meteor/rocketchat:authorization';
import { Users, Subscriptions, Messages } from 'meteor/rocketchat:models';
import { settings } from 'meteor/rocketchat:settings';
import { Notifications } from 'meteor/rocketchat:notifications';
Meteor.methods({ Meteor.methods({
addRoomModerator(rid, userId) { addRoomModerator(rid, userId) {
@ -12,13 +16,13 @@ Meteor.methods({
}); });
} }
if (!RocketChat.authz.hasPermission(Meteor.userId(), 'set-moderator', rid)) { if (!hasPermission(Meteor.userId(), 'set-moderator', rid)) {
throw new Meteor.Error('error-not-allowed', 'Not allowed', { throw new Meteor.Error('error-not-allowed', 'Not allowed', {
method: 'addRoomModerator', method: 'addRoomModerator',
}); });
} }
const user = RocketChat.models.Users.findOneById(userId); const user = Users.findOneById(userId);
if (!user || !user.username) { if (!user || !user.username) {
throw new Meteor.Error('error-invalid-user', 'Invalid user', { throw new Meteor.Error('error-invalid-user', 'Invalid user', {
@ -26,7 +30,7 @@ Meteor.methods({
}); });
} }
const subscription = RocketChat.models.Subscriptions.findOneByRoomIdAndUserId(rid, user._id); const subscription = Subscriptions.findOneByRoomIdAndUserId(rid, user._id);
if (!subscription) { if (!subscription) {
throw new Meteor.Error('error-user-not-in-room', 'User is not in this room', { throw new Meteor.Error('error-user-not-in-room', 'User is not in this room', {
@ -40,11 +44,11 @@ Meteor.methods({
}); });
} }
RocketChat.models.Subscriptions.addRoleById(subscription._id, 'moderator'); Subscriptions.addRoleById(subscription._id, 'moderator');
const fromUser = RocketChat.models.Users.findOneById(Meteor.userId()); const fromUser = Users.findOneById(Meteor.userId());
RocketChat.models.Messages.createSubscriptionRoleAddedWithRoomIdAndUser(rid, user, { Messages.createSubscriptionRoleAddedWithRoomIdAndUser(rid, user, {
u: { u: {
_id: fromUser._id, _id: fromUser._id,
username: fromUser.username, username: fromUser.username,
@ -52,8 +56,8 @@ Meteor.methods({
role: 'moderator', role: 'moderator',
}); });
if (RocketChat.settings.get('UI_DisplayRoles')) { if (settings.get('UI_DisplayRoles')) {
RocketChat.Notifications.notifyLogged('roles-change', { Notifications.notifyLogged('roles-change', {
type: 'added', type: 'added',
_id: 'moderator', _id: 'moderator',
u: { u: {

@ -1,5 +1,9 @@
import { Meteor } from 'meteor/meteor'; import { Meteor } from 'meteor/meteor';
import { check } from 'meteor/check'; import { check } from 'meteor/check';
import { hasPermission } from 'meteor/rocketchat:authorization';
import { Users, Subscriptions, Messages } from 'meteor/rocketchat:models';
import { settings } from 'meteor/rocketchat:settings';
import { Notifications } from 'meteor/rocketchat:notifications';
Meteor.methods({ Meteor.methods({
addRoomOwner(rid, userId) { addRoomOwner(rid, userId) {
@ -12,13 +16,13 @@ Meteor.methods({
}); });
} }
if (!RocketChat.authz.hasPermission(Meteor.userId(), 'set-owner', rid)) { if (!hasPermission(Meteor.userId(), 'set-owner', rid)) {
throw new Meteor.Error('error-not-allowed', 'Not allowed', { throw new Meteor.Error('error-not-allowed', 'Not allowed', {
method: 'addRoomOwner', method: 'addRoomOwner',
}); });
} }
const user = RocketChat.models.Users.findOneById(userId); const user = Users.findOneById(userId);
if (!user || !user.username) { if (!user || !user.username) {
throw new Meteor.Error('error-invalid-user', 'Invalid user', { throw new Meteor.Error('error-invalid-user', 'Invalid user', {
@ -26,7 +30,7 @@ Meteor.methods({
}); });
} }
const subscription = RocketChat.models.Subscriptions.findOneByRoomIdAndUserId(rid, user._id); const subscription = Subscriptions.findOneByRoomIdAndUserId(rid, user._id);
if (!subscription) { if (!subscription) {
throw new Meteor.Error('error-user-not-in-room', 'User is not in this room', { throw new Meteor.Error('error-user-not-in-room', 'User is not in this room', {
@ -40,11 +44,11 @@ Meteor.methods({
}); });
} }
RocketChat.models.Subscriptions.addRoleById(subscription._id, 'owner'); Subscriptions.addRoleById(subscription._id, 'owner');
const fromUser = RocketChat.models.Users.findOneById(Meteor.userId()); const fromUser = Users.findOneById(Meteor.userId());
RocketChat.models.Messages.createSubscriptionRoleAddedWithRoomIdAndUser(rid, user, { Messages.createSubscriptionRoleAddedWithRoomIdAndUser(rid, user, {
u: { u: {
_id: fromUser._id, _id: fromUser._id,
username: fromUser.username, username: fromUser.username,
@ -52,8 +56,8 @@ Meteor.methods({
role: 'owner', role: 'owner',
}); });
if (RocketChat.settings.get('UI_DisplayRoles')) { if (settings.get('UI_DisplayRoles')) {
RocketChat.Notifications.notifyLogged('roles-change', { Notifications.notifyLogged('roles-change', {
type: 'added', type: 'added',
_id: 'owner', _id: 'owner',
u: { u: {

@ -1,4 +1,5 @@
import { Meteor } from 'meteor/meteor'; import { Meteor } from 'meteor/meteor';
import { Users, Roles } from 'meteor/rocketchat:models';
import _ from 'underscore'; import _ from 'underscore';
Meteor.methods({ Meteor.methods({
@ -11,13 +12,13 @@ Meteor.methods({
}); });
} }
const user = RocketChat.models.Users.findOneById(userId); const user = Users.findOneById(userId);
const verifiedEmail = _.find(user.emails, (email) => email.verified); const verifiedEmail = _.find(user.emails, (email) => email.verified);
if (verifiedEmail) { if (verifiedEmail) {
RocketChat.models.Roles.addUserRoles(user._id, 'user'); Roles.addUserRoles(user._id, 'user');
RocketChat.models.Roles.removeUserRoles(user._id, 'anonymous'); Roles.removeUserRoles(user._id, 'anonymous');
} }
}, },
}); });

@ -1,5 +1,7 @@
import { Meteor } from 'meteor/meteor'; import { Meteor } from 'meteor/meteor';
import { DDPRateLimiter } from 'meteor/ddp-rate-limiter'; import { DDPRateLimiter } from 'meteor/ddp-rate-limiter';
import { hasPermission } from 'meteor/rocketchat:authorization';
import { Rooms, Users } from 'meteor/rocketchat:models';
import s from 'underscore.string'; import s from 'underscore.string';
const sortChannels = function(field, direction) { const sortChannels = function(field, direction) {
@ -57,11 +59,11 @@ Meteor.methods({
if (type === 'channels') { if (type === 'channels') {
const sort = sortChannels(sortBy, sortDirection); const sort = sortChannels(sortBy, sortDirection);
if (!RocketChat.authz.hasPermission(user._id, 'view-c-room')) { if (!hasPermission(user._id, 'view-c-room')) {
return; return;
} }
return { return {
results: RocketChat.models.Rooms.findByNameAndType(regex, 'c', { results: Rooms.findByNameAndType(regex, 'c', {
...options, ...options,
sort, sort,
fields: { fields: {
@ -74,17 +76,17 @@ Meteor.methods({
usersCount: 1, usersCount: 1,
}, },
}).fetch(), }).fetch(),
total: RocketChat.models.Rooms.findByNameAndType(regex, 'c').count(), total: Rooms.findByNameAndType(regex, 'c').count(),
}; };
} }
// type === users // type === users
if (!RocketChat.authz.hasPermission(user._id, 'view-outside-room') || !RocketChat.authz.hasPermission(user._id, 'view-d-room')) { if (!hasPermission(user._id, 'view-outside-room') || !hasPermission(user._id, 'view-d-room')) {
return; return;
} }
const sort = sortUsers(sortBy, sortDirection); const sort = sortUsers(sortBy, sortDirection);
return { return {
results: RocketChat.models.Users.findByActiveUsersExcept(text, [user.username], { results: Users.findByActiveUsersExcept(text, [user.username], {
...options, ...options,
sort, sort,
fields: { fields: {
@ -94,7 +96,7 @@ Meteor.methods({
emails: 1, emails: 1,
}, },
}).fetch(), }).fetch(),
total: RocketChat.models.Users.findByActiveUsersExcept(text, [user.username]).count(), total: Users.findByActiveUsersExcept(text, [user.username]).count(),
}; };
}, },
}); });

@ -1,5 +1,8 @@
import { Meteor } from 'meteor/meteor'; import { Meteor } from 'meteor/meteor';
import { Match, check } from 'meteor/check'; import { Match, check } from 'meteor/check';
import { Users, Rooms } from 'meteor/rocketchat:models';
import { canAccessRoom } from 'meteor/rocketchat:authorization';
import { settings } from 'meteor/rocketchat:settings';
Meteor.methods({ Meteor.methods({
canAccessRoom(rid, userId, extraData) { canAccessRoom(rid, userId, extraData) {
@ -9,7 +12,7 @@ Meteor.methods({
let user; let user;
if (userId) { if (userId) {
user = RocketChat.models.Users.findOneById(userId, { user = Users.findOneById(userId, {
fields: { fields: {
username: 1, username: 1,
}, },
@ -28,16 +31,16 @@ Meteor.methods({
}); });
} }
const room = RocketChat.models.Rooms.findOneById(rid); const room = Rooms.findOneById(rid);
if (room) { if (room) {
if (RocketChat.authz.canAccessRoom.call(this, room, user, extraData)) { if (canAccessRoom.call(this, room, user, extraData)) {
if (user) { if (user) {
room.username = user.username; room.username = user.username;
} }
return room; return room;
} }
if (!userId && RocketChat.settings.get('Accounts_AllowAnonymousRead') === false) { if (!userId && settings.get('Accounts_AllowAnonymousRead') === false) {
throw new Meteor.Error('error-invalid-user', 'Invalid user', { throw new Meteor.Error('error-invalid-user', 'Invalid user', {
method: 'canAccessRoom', method: 'canAccessRoom',
}); });

@ -1,5 +1,9 @@
import { Meteor } from 'meteor/meteor'; import { Meteor } from 'meteor/meteor';
import { Match, check } from 'meteor/check'; import { Match, check } from 'meteor/check';
import { hasPermission } from 'meteor/rocketchat:authorization';
import { Rooms, Subscriptions, Users } from 'meteor/rocketchat:models';
import { getUserPreference } from 'meteor/rocketchat:utils';
import { settings } from 'meteor/rocketchat:settings';
import _ from 'underscore'; import _ from 'underscore';
import s from 'underscore.string'; import s from 'underscore.string';
@ -51,39 +55,39 @@ Meteor.methods({
const userId = Meteor.userId(); const userId = Meteor.userId();
if (channelType !== 'private') { if (channelType !== 'private') {
if (RocketChat.authz.hasPermission(userId, 'view-c-room')) { if (hasPermission(userId, 'view-c-room')) {
if (filter) { if (filter) {
channels = channels.concat(RocketChat.models.Rooms.findByType('c', options).fetch()); channels = channels.concat(Rooms.findByType('c', options).fetch());
} else { } else {
channels = channels.concat(RocketChat.models.Rooms.findByTypeAndNameContaining('c', filter, options).fetch()); channels = channels.concat(Rooms.findByTypeAndNameContaining('c', filter, options).fetch());
} }
} else if (RocketChat.authz.hasPermission(userId, 'view-joined-room')) { } else if (hasPermission(userId, 'view-joined-room')) {
const roomIds = RocketChat.models.Subscriptions.findByTypeAndUserId('c', userId, { fields: { rid: 1 } }).fetch().map((s) => s.rid); const roomIds = Subscriptions.findByTypeAndUserId('c', userId, { fields: { rid: 1 } }).fetch().map((s) => s.rid);
if (filter) { if (filter) {
channels = channels.concat(RocketChat.models.Rooms.findByTypeInIds('c', roomIds, options).fetch()); channels = channels.concat(Rooms.findByTypeInIds('c', roomIds, options).fetch());
} else { } else {
channels = channels.concat(RocketChat.models.Rooms.findByTypeInIdsAndNameContaining('c', roomIds, filter, options).fetch()); channels = channels.concat(Rooms.findByTypeInIdsAndNameContaining('c', roomIds, filter, options).fetch());
} }
} }
} }
if (channelType !== 'public' && RocketChat.authz.hasPermission(userId, 'view-p-room')) { if (channelType !== 'public' && hasPermission(userId, 'view-p-room')) {
const user = RocketChat.models.Users.findOne(userId, { const user = Users.findOne(userId, {
fields: { fields: {
username: 1, username: 1,
'settings.preferences.sidebarGroupByType': 1, 'settings.preferences.sidebarGroupByType': 1,
}, },
}); });
const userPref = RocketChat.getUserPreference(user, 'sidebarGroupByType'); const userPref = getUserPreference(user, 'sidebarGroupByType');
// needs to negate globalPref because userPref represents its opposite // needs to negate globalPref because userPref represents its opposite
const groupByType = userPref !== undefined ? userPref : RocketChat.settings.get('UI_Group_Channels_By_Type'); const groupByType = userPref !== undefined ? userPref : settings.get('UI_Group_Channels_By_Type');
if (!groupByType) { if (!groupByType) {
const roomIds = RocketChat.models.Subscriptions.findByTypeAndUserId('p', userId, { fields: { rid: 1 } }).fetch().map((s) => s.rid); const roomIds = Subscriptions.findByTypeAndUserId('p', userId, { fields: { rid: 1 } }).fetch().map((s) => s.rid);
if (filter) { if (filter) {
channels = channels.concat(RocketChat.models.Rooms.findByTypeInIds('p', roomIds, options).fetch()); channels = channels.concat(Rooms.findByTypeInIds('p', roomIds, options).fetch());
} else { } else {
channels = channels.concat(RocketChat.models.Rooms.findByTypeInIdsAndNameContaining('p', roomIds, filter, options).fetch()); channels = channels.concat(Rooms.findByTypeInIdsAndNameContaining('p', roomIds, filter, options).fetch());
} }
} }
} }

@ -1,5 +1,10 @@
import { Meteor } from 'meteor/meteor'; import { Meteor } from 'meteor/meteor';
import { check } from 'meteor/check'; import { check } from 'meteor/check';
import { settings } from 'meteor/rocketchat:settings';
import { hasPermission } from 'meteor/rocketchat:authorization';
import { Users, Rooms, Subscriptions } from 'meteor/rocketchat:models';
import { getDefaultSubscriptionPref } from 'meteor/rocketchat:utils';
import { RateLimiter } from 'meteor/rocketchat:lib';
Meteor.methods({ Meteor.methods({
createDirectMessage(username) { createDirectMessage(username) {
@ -19,19 +24,19 @@ Meteor.methods({
}); });
} }
if (RocketChat.settings.get('Message_AllowDirectMessagesToYourself') === false && me.username === username) { if (settings.get('Message_AllowDirectMessagesToYourself') === false && me.username === username) {
throw new Meteor.Error('error-invalid-user', 'Invalid user', { throw new Meteor.Error('error-invalid-user', 'Invalid user', {
method: 'createDirectMessage', method: 'createDirectMessage',
}); });
} }
if (!RocketChat.authz.hasPermission(Meteor.userId(), 'create-d')) { if (!hasPermission(Meteor.userId(), 'create-d')) {
throw new Meteor.Error('error-not-allowed', 'Not allowed', { throw new Meteor.Error('error-not-allowed', 'Not allowed', {
method: 'createDirectMessage', method: 'createDirectMessage',
}); });
} }
const to = RocketChat.models.Users.findOneByUsername(username); const to = Users.findOneByUsername(username);
if (!to) { if (!to) {
throw new Meteor.Error('error-invalid-user', 'Invalid user', { throw new Meteor.Error('error-invalid-user', 'Invalid user', {
@ -39,7 +44,7 @@ Meteor.methods({
}); });
} }
if (!RocketChat.authz.hasPermission(to._id, 'view-d-room')) { if (!hasPermission(to._id, 'view-d-room')) {
throw new Meteor.Error('error-not-allowed', 'Target user not allowed to receive messages', { throw new Meteor.Error('error-not-allowed', 'Target user not allowed to receive messages', {
method: 'createDirectMessage', method: 'createDirectMessage',
}); });
@ -50,7 +55,7 @@ Meteor.methods({
const now = new Date(); const now = new Date();
// Make sure we have a room // Make sure we have a room
RocketChat.models.Rooms.upsert({ Rooms.upsert({
_id: rid, _id: rid,
}, { }, {
$set: { $set: {
@ -64,7 +69,7 @@ Meteor.methods({
}, },
}); });
const myNotificationPref = RocketChat.getDefaultSubscriptionPref(me); const myNotificationPref = getDefaultSubscriptionPref(me);
// Make user I have a subcription to this room // Make user I have a subcription to this room
const upsertSubscription = { const upsertSubscription = {
@ -94,14 +99,14 @@ Meteor.methods({
upsertSubscription.$set.archived = true; upsertSubscription.$set.archived = true;
} }
RocketChat.models.Subscriptions.upsert({ Subscriptions.upsert({
rid, rid,
$and: [{ 'u._id': me._id }], // work around to solve problems with upsert and dot $and: [{ 'u._id': me._id }], // work around to solve problems with upsert and dot
}, upsertSubscription); }, upsertSubscription);
const toNotificationPref = RocketChat.getDefaultSubscriptionPref(to); const toNotificationPref = getDefaultSubscriptionPref(to);
RocketChat.models.Subscriptions.upsert({ Subscriptions.upsert({
rid, rid,
$and: [{ 'u._id': to._id }], // work around to solve problems with upsert and dot $and: [{ 'u._id': to._id }], // work around to solve problems with upsert and dot
}, { }, {
@ -130,8 +135,8 @@ Meteor.methods({
}, },
}); });
RocketChat.RateLimiter.limitMethod('createDirectMessage', 10, 60000, { RateLimiter.limitMethod('createDirectMessage', 10, 60000, {
userId(userId) { userId(userId) {
return !RocketChat.authz.hasPermission(userId, 'send-many-messages'); return !hasPermission(userId, 'send-many-messages');
}, },
}); });

@ -1,12 +1,13 @@
import { Meteor } from 'meteor/meteor'; import { Meteor } from 'meteor/meteor';
import { check } from 'meteor/check'; import { check } from 'meteor/check';
import { FileUpload } from 'meteor/rocketchat:file-upload'; import { FileUpload } from 'meteor/rocketchat:file-upload';
import { Messages } from 'meteor/rocketchat:models';
Meteor.methods({ Meteor.methods({
deleteFileMessage(fileID) { deleteFileMessage(fileID) {
check(fileID, String); check(fileID, String);
const msg = RocketChat.models.Messages.getMessageByFileId(fileID); const msg = Messages.getMessageByFileId(fileID);
if (msg) { if (msg) {
return Meteor.call('deleteMessage', msg); return Meteor.call('deleteMessage', msg);

@ -1,5 +1,8 @@
import { Meteor } from 'meteor/meteor'; import { Meteor } from 'meteor/meteor';
import { check } from 'meteor/check'; import { check } from 'meteor/check';
import { Users } from 'meteor/rocketchat:models';
import { hasPermission } from 'meteor/rocketchat:authorization';
import { deleteUser } from 'meteor/rocketchat:lib';
Meteor.methods({ Meteor.methods({
deleteUser(userId) { deleteUser(userId) {
@ -11,13 +14,13 @@ Meteor.methods({
}); });
} }
if (RocketChat.authz.hasPermission(Meteor.userId(), 'delete-user') !== true) { if (hasPermission(Meteor.userId(), 'delete-user') !== true) {
throw new Meteor.Error('error-not-allowed', 'Not allowed', { throw new Meteor.Error('error-not-allowed', 'Not allowed', {
method: 'deleteUser', method: 'deleteUser',
}); });
} }
const user = RocketChat.models.Users.findOneById(userId); const user = Users.findOneById(userId);
if (!user) { if (!user) {
throw new Meteor.Error('error-invalid-user', 'Invalid user to delete', { throw new Meteor.Error('error-invalid-user', 'Invalid user to delete', {
method: 'deleteUser', method: 'deleteUser',
@ -35,7 +38,7 @@ Meteor.methods({
}); });
} }
RocketChat.deleteUser(userId); deleteUser(userId);
return true; return true;
}, },

@ -1,7 +1,8 @@
import { Meteor } from 'meteor/meteor'; import { Meteor } from 'meteor/meteor';
import { check } from 'meteor/check'; import { check } from 'meteor/check';
import { RocketChat } from 'meteor/rocketchat:lib'; import { roomTypes } from 'meteor/rocketchat:utils';
import { hasPermission } from 'meteor/rocketchat:authorization'; import { hasPermission } from 'meteor/rocketchat:authorization';
import { Rooms, Messages, Subscriptions } from 'meteor/rocketchat:models';
Meteor.methods({ Meteor.methods({
eraseRoom(rid) { eraseRoom(rid) {
@ -13,7 +14,7 @@ Meteor.methods({
}); });
} }
const room = RocketChat.models.Rooms.findOneById(rid); const room = Rooms.findOneById(rid);
if (!room) { if (!room) {
throw new Meteor.Error('error-invalid-room', 'Invalid room', { throw new Meteor.Error('error-invalid-room', 'Invalid room', {
@ -28,16 +29,16 @@ Meteor.methods({
} }
} }
if (!RocketChat.roomTypes.roomTypes[room.t].canBeDeleted(hasPermission, room)) { if (!roomTypes.roomTypes[room.t].canBeDeleted(hasPermission, room)) {
throw new Meteor.Error('error-not-allowed', 'Not allowed', { throw new Meteor.Error('error-not-allowed', 'Not allowed', {
method: 'eraseRoom', method: 'eraseRoom',
}); });
} }
RocketChat.models.Messages.removeFilesByRoomId(rid); Messages.removeFilesByRoomId(rid);
RocketChat.models.Messages.removeByRoomId(rid); Messages.removeByRoomId(rid);
RocketChat.models.Subscriptions.removeByRoomId(rid); Subscriptions.removeByRoomId(rid);
const result = RocketChat.models.Rooms.removeById(rid); const result = Rooms.removeById(rid);
if (Apps && Apps.isLoaded()) { if (Apps && Apps.isLoaded()) {
Apps.getBridges().getListenerBridge().roomEvent('IPostRoomDeleted', room); Apps.getBridges().getListenerBridge().roomEvent('IPostRoomDeleted', room);

@ -2,48 +2,49 @@ import { Meteor } from 'meteor/meteor';
import { check } from 'meteor/check'; import { check } from 'meteor/check';
import { HTTP } from 'meteor/http'; import { HTTP } from 'meteor/http';
import { Gravatar } from 'meteor/jparker:gravatar'; import { Gravatar } from 'meteor/jparker:gravatar';
import { settings } from 'meteor/rocketchat:settings';
function getAvatarSuggestionForUser(user) { function getAvatarSuggestionForUser(user) {
check(user, Object); check(user, Object);
const avatars = []; const avatars = [];
if (user.services.facebook && user.services.facebook.id && RocketChat.settings.get('Accounts_OAuth_Facebook')) { if (user.services.facebook && user.services.facebook.id && settings.get('Accounts_OAuth_Facebook')) {
avatars.push({ avatars.push({
service: 'facebook', service: 'facebook',
url: `https://graph.facebook.com/${ user.services.facebook.id }/picture?type=large`, url: `https://graph.facebook.com/${ user.services.facebook.id }/picture?type=large`,
}); });
} }
if (user.services.google && user.services.google.picture && user.services.google.picture !== 'https://lh3.googleusercontent.com/-XdUIqdMkCWA/AAAAAAAAAAI/AAAAAAAAAAA/4252rscbv5M/photo.jpg' && RocketChat.settings.get('Accounts_OAuth_Google')) { if (user.services.google && user.services.google.picture && user.services.google.picture !== 'https://lh3.googleusercontent.com/-XdUIqdMkCWA/AAAAAAAAAAI/AAAAAAAAAAA/4252rscbv5M/photo.jpg' && settings.get('Accounts_OAuth_Google')) {
avatars.push({ avatars.push({
service: 'google', service: 'google',
url: user.services.google.picture, url: user.services.google.picture,
}); });
} }
if (user.services.github && user.services.github.username && RocketChat.settings.get('Accounts_OAuth_Github')) { if (user.services.github && user.services.github.username && settings.get('Accounts_OAuth_Github')) {
avatars.push({ avatars.push({
service: 'github', service: 'github',
url: `https://avatars.githubusercontent.com/${ user.services.github.username }?s=200`, url: `https://avatars.githubusercontent.com/${ user.services.github.username }?s=200`,
}); });
} }
if (user.services.linkedin && user.services.linkedin.pictureUrl && RocketChat.settings.get('Accounts_OAuth_Linkedin')) { if (user.services.linkedin && user.services.linkedin.pictureUrl && settings.get('Accounts_OAuth_Linkedin')) {
avatars.push({ avatars.push({
service: 'linkedin', service: 'linkedin',
url: user.services.linkedin.pictureUrl, url: user.services.linkedin.pictureUrl,
}); });
} }
if (user.services.twitter && user.services.twitter.profile_image_url_https && RocketChat.settings.get('Accounts_OAuth_Twitter')) { if (user.services.twitter && user.services.twitter.profile_image_url_https && settings.get('Accounts_OAuth_Twitter')) {
avatars.push({ avatars.push({
service: 'twitter', service: 'twitter',
url: user.services.twitter.profile_image_url_https.replace(/_normal|_bigger/, ''), url: user.services.twitter.profile_image_url_https.replace(/_normal|_bigger/, ''),
}); });
} }
if (user.services.gitlab && user.services.gitlab.avatar_url && RocketChat.settings.get('Accounts_OAuth_Gitlab')) { if (user.services.gitlab && user.services.gitlab.avatar_url && settings.get('Accounts_OAuth_Gitlab')) {
avatars.push({ avatars.push({
service: 'gitlab', service: 'gitlab',
url: user.services.gitlab.avatar_url, url: user.services.gitlab.avatar_url,
@ -57,7 +58,7 @@ function getAvatarSuggestionForUser(user) {
}); });
} }
if (user.services.blockstack && user.services.blockstack.image && RocketChat.settings.get('Blockstack_Enable')) { if (user.services.blockstack && user.services.blockstack.image && settings.get('Blockstack_Enable')) {
avatars.push({ avatars.push({
service: 'blockstack', service: 'blockstack',
url: user.services.blockstack.image, url: user.services.blockstack.image,

@ -1,6 +1,8 @@
// DEPRECATE // DEPRECATE
import { Meteor } from 'meteor/meteor'; import { Meteor } from 'meteor/meteor';
import { check } from 'meteor/check'; import { check } from 'meteor/check';
import { Rooms } from 'meteor/rocketchat:models';
import { canAccessRoom } from 'meteor/rocketchat:authorization';
Meteor.methods({ Meteor.methods({
getRoomIdByNameOrId(rid) { getRoomIdByNameOrId(rid) {
@ -12,7 +14,7 @@ Meteor.methods({
}); });
} }
const room = RocketChat.models.Rooms.findOneById(rid) || RocketChat.models.Rooms.findOneByName(rid); const room = Rooms.findOneById(rid) || Rooms.findOneByName(rid);
if (room == null) { if (room == null) {
throw new Meteor.Error('error-not-allowed', 'Not allowed', { throw new Meteor.Error('error-not-allowed', 'Not allowed', {
@ -20,7 +22,7 @@ Meteor.methods({
}); });
} }
if (!RocketChat.authz.canAccessRoom(room, Meteor.user())) { if (!canAccessRoom(room, Meteor.user())) {
throw new Meteor.Error('error-not-allowed', 'Not allowed', { throw new Meteor.Error('error-not-allowed', 'Not allowed', {
method: 'getRoomIdByNameOrId', method: 'getRoomIdByNameOrId',
}); });

@ -1,5 +1,7 @@
import { Meteor } from 'meteor/meteor'; import { Meteor } from 'meteor/meteor';
import { check } from 'meteor/check'; import { check } from 'meteor/check';
import { Rooms, Subscriptions } from 'meteor/rocketchat:models';
import { hasPermission } from 'meteor/rocketchat:authorization';
Meteor.methods({ Meteor.methods({
getRoomNameById(rid) { getRoomNameById(rid) {
@ -11,7 +13,7 @@ Meteor.methods({
}); });
} }
const room = RocketChat.models.Rooms.findOneById(rid); const room = Rooms.findOneById(rid);
if (room == null) { if (room == null) {
throw new Meteor.Error('error-not-allowed', 'Not allowed', { throw new Meteor.Error('error-not-allowed', 'Not allowed', {
@ -19,12 +21,12 @@ Meteor.methods({
}); });
} }
const subscription = RocketChat.models.Subscriptions.findOneByRoomIdAndUserId(rid, userId, { fields: { _id: 1 } }); const subscription = Subscriptions.findOneByRoomIdAndUserId(rid, userId, { fields: { _id: 1 } });
if (subscription) { if (subscription) {
return room.name; return room.name;
} }
if (room.t !== 'c' || RocketChat.authz.hasPermission(userId, 'view-c-room') !== true) { if (room.t !== 'c' || hasPermission(userId, 'view-c-room') !== true) {
throw new Meteor.Error('error-not-allowed', 'Not allowed', { throw new Meteor.Error('error-not-allowed', 'Not allowed', {
method: 'getRoomNameById', method: 'getRoomNameById',
}); });

@ -1,4 +1,5 @@
import { Meteor } from 'meteor/meteor'; import { Meteor } from 'meteor/meteor';
import { Rooms } from 'meteor/rocketchat:models';
Meteor.methods({ Meteor.methods({
getTotalChannels() { getTotalChannels() {
@ -11,6 +12,6 @@ Meteor.methods({
const query = { const query = {
t: 'c', t: 'c',
}; };
return RocketChat.models.Rooms.find(query).count(); return Rooms.find(query).count();
}, },
}); });

@ -1,4 +1,6 @@
import { Meteor } from 'meteor/meteor'; import { Meteor } from 'meteor/meteor';
import { Subscriptions } from 'meteor/rocketchat:models';
import { hasPermission } from 'meteor/rocketchat:authorization';
Meteor.methods({ Meteor.methods({
async getUsersOfRoom(rid, showAll) { async getUsersOfRoom(rid, showAll) {
@ -12,15 +14,15 @@ Meteor.methods({
throw new Meteor.Error('error-invalid-room', 'Invalid room', { method: 'getUsersOfRoom' }); throw new Meteor.Error('error-invalid-room', 'Invalid room', { method: 'getUsersOfRoom' });
} }
if (room.broadcast && !RocketChat.authz.hasPermission(userId, 'view-broadcast-member-list', rid)) { if (room.broadcast && !hasPermission(userId, 'view-broadcast-member-list', rid)) {
throw new Meteor.Error('error-not-allowed', 'Not allowed', { method: 'getUsersOfRoom' }); throw new Meteor.Error('error-not-allowed', 'Not allowed', { method: 'getUsersOfRoom' });
} }
const subscriptions = RocketChat.models.Subscriptions.findByRoomIdWhenUsernameExists(rid); const subscriptions = Subscriptions.findByRoomIdWhenUsernameExists(rid);
return { return {
total: subscriptions.count(), total: subscriptions.count(),
records: await RocketChat.models.Subscriptions.model.rawCollection().aggregate([ records: await Subscriptions.model.rawCollection().aggregate([
{ $match: { rid } }, { $match: { rid } },
{ {
$lookup: $lookup:

@ -1,5 +1,6 @@
import { Meteor } from 'meteor/meteor'; import { Meteor } from 'meteor/meteor';
import { check } from 'meteor/check'; import { check } from 'meteor/check';
import { Subscriptions } from 'meteor/rocketchat:models';
Meteor.methods({ Meteor.methods({
hideRoom(rid) { hideRoom(rid) {
@ -11,6 +12,6 @@ Meteor.methods({
}); });
} }
return RocketChat.models.Subscriptions.hideByRoomIdAndUserId(rid, Meteor.userId()); return Subscriptions.hideByRoomIdAndUserId(rid, Meteor.userId());
}, },
}); });

@ -1,6 +1,6 @@
import { Meteor } from 'meteor/meteor'; import { Meteor } from 'meteor/meteor';
import { check } from 'meteor/check'; import { check } from 'meteor/check';
import { RocketChat } from 'meteor/rocketchat:lib'; import { Subscriptions } from 'meteor/rocketchat:models';
Meteor.methods({ Meteor.methods({
ignoreUser({ rid, userId: ignoredUser, ignore = true }) { ignoreUser({ rid, userId: ignoredUser, ignore = true }) {
@ -15,18 +15,18 @@ Meteor.methods({
}); });
} }
const subscription = RocketChat.models.Subscriptions.findOneByRoomIdAndUserId(rid, userId); const subscription = Subscriptions.findOneByRoomIdAndUserId(rid, userId);
if (!subscription) { if (!subscription) {
throw new Meteor.Error('error-invalid-subscription', 'Invalid subscription', { method: 'ignoreUser' }); throw new Meteor.Error('error-invalid-subscription', 'Invalid subscription', { method: 'ignoreUser' });
} }
const subscriptionIgnoredUser = RocketChat.models.Subscriptions.findOneByRoomIdAndUserId(rid, ignoredUser); const subscriptionIgnoredUser = Subscriptions.findOneByRoomIdAndUserId(rid, ignoredUser);
if (!subscriptionIgnoredUser) { if (!subscriptionIgnoredUser) {
throw new Meteor.Error('error-invalid-subscription', 'Invalid subscription', { method: 'ignoreUser' }); throw new Meteor.Error('error-invalid-subscription', 'Invalid subscription', { method: 'ignoreUser' });
} }
return !!RocketChat.models.Subscriptions.ignoreUser({ _id: subscription._id, ignoredUser, ignore }); return !!Subscriptions.ignoreUser({ _id: subscription._id, ignoredUser, ignore });
}, },
}); });

@ -1,9 +1,13 @@
import { Meteor } from 'meteor/meteor'; import { Meteor } from 'meteor/meteor';
import { check } from 'meteor/check'; import { check } from 'meteor/check';
import { Subscriptions } from 'meteor/rocketchat:models';
import { hasPermission } from 'meteor/rocketchat:authorization';
import { settings } from 'meteor/rocketchat:settings';
import { loadMessageHistory } from 'meteor/rocketchat:lib';
const hideMessagesOfType = []; const hideMessagesOfType = [];
RocketChat.settings.get(/Message_HideType_.+/, function(key, value) { settings.get(/Message_HideType_.+/, function(key, value) {
const type = key.replace('Message_HideType_', ''); const type = key.replace('Message_HideType_', '');
const types = type === 'mute_unmute' ? ['user-muted', 'user-unmuted'] : [type]; const types = type === 'mute_unmute' ? ['user-muted', 'user-unmuted'] : [type];
@ -25,7 +29,7 @@ Meteor.methods({
this.unblock(); this.unblock();
check(rid, String); check(rid, String);
if (!Meteor.userId() && RocketChat.settings.get('Accounts_AllowAnonymousRead') === false) { if (!Meteor.userId() && settings.get('Accounts_AllowAnonymousRead') === false) {
throw new Meteor.Error('error-invalid-user', 'Invalid user', { throw new Meteor.Error('error-invalid-user', 'Invalid user', {
method: 'loadHistory', method: 'loadHistory',
}); });
@ -38,13 +42,13 @@ Meteor.methods({
return false; return false;
} }
const canAnonymous = RocketChat.settings.get('Accounts_AllowAnonymousRead'); const canAnonymous = settings.get('Accounts_AllowAnonymousRead');
const canPreview = RocketChat.authz.hasPermission(fromId, 'preview-c-room'); const canPreview = hasPermission(fromId, 'preview-c-room');
if (room.t === 'c' && !canAnonymous && !canPreview && !RocketChat.models.Subscriptions.findOneByRoomIdAndUserId(rid, fromId, { fields: { _id: 1 } })) { if (room.t === 'c' && !canAnonymous && !canPreview && !Subscriptions.findOneByRoomIdAndUserId(rid, fromId, { fields: { _id: 1 } })) {
return false; return false;
} }
return RocketChat.loadMessageHistory({ userId: fromId, rid, end, limit, ls }); return loadMessageHistory({ userId: fromId, rid, end, limit, ls });
}, },
}); });

@ -1,5 +1,7 @@
import { Meteor } from 'meteor/meteor'; import { Meteor } from 'meteor/meteor';
import { check } from 'meteor/check'; import { check } from 'meteor/check';
import { Messages } from 'meteor/rocketchat:models';
import { settings } from 'meteor/rocketchat:settings';
Meteor.methods({ Meteor.methods({
loadMissedMessages(rid, start) { loadMissedMessages(rid, start) {
@ -23,12 +25,12 @@ Meteor.methods({
}, },
}; };
if (!RocketChat.settings.get('Message_ShowEditedStatus')) { if (!settings.get('Message_ShowEditedStatus')) {
options.fields = { options.fields = {
editedAt: 0, editedAt: 0,
}; };
} }
return RocketChat.models.Messages.findVisibleByRoomIdAfterTimestamp(rid, start, options).fetch(); return Messages.findVisibleByRoomIdAfterTimestamp(rid, start, options).fetch();
}, },
}); });

@ -1,5 +1,8 @@
import { Meteor } from 'meteor/meteor'; import { Meteor } from 'meteor/meteor';
import { check } from 'meteor/check'; import { check } from 'meteor/check';
import { Messages } from 'meteor/rocketchat:models';
import { settings } from 'meteor/rocketchat:settings';
import { composeMessageObjectWithUser } from 'meteor/rocketchat:utils';
Meteor.methods({ Meteor.methods({
loadNextMessages(rid, end, limit = 20) { loadNextMessages(rid, end, limit = 20) {
@ -25,7 +28,7 @@ Meteor.methods({
limit, limit,
}; };
if (!RocketChat.settings.get('Message_ShowEditedStatus')) { if (!settings.get('Message_ShowEditedStatus')) {
options.fields = { options.fields = {
editedAt: 0, editedAt: 0,
}; };
@ -33,13 +36,13 @@ Meteor.methods({
let records; let records;
if (end) { if (end) {
records = RocketChat.models.Messages.findVisibleByRoomIdAfterTimestamp(rid, end, options).fetch(); records = Messages.findVisibleByRoomIdAfterTimestamp(rid, end, options).fetch();
} else { } else {
records = RocketChat.models.Messages.findVisibleByRoomId(rid, options).fetch(); records = Messages.findVisibleByRoomId(rid, options).fetch();
} }
return { return {
messages: records.map((message) => RocketChat.composeMessageObjectWithUser(message, fromId)), messages: records.map((message) => composeMessageObjectWithUser(message, fromId)),
}; };
}, },
}); });

@ -1,5 +1,8 @@
import { Meteor } from 'meteor/meteor'; import { Meteor } from 'meteor/meteor';
import { check } from 'meteor/check'; import { check } from 'meteor/check';
import { Messages } from 'meteor/rocketchat:models';
import { settings } from 'meteor/rocketchat:settings';
import { composeMessageObjectWithUser } from 'meteor/rocketchat:utils';
Meteor.methods({ Meteor.methods({
loadSurroundingMessages(message, limit = 50) { loadSurroundingMessages(message, limit = 50) {
@ -18,7 +21,7 @@ Meteor.methods({
return false; return false;
} }
message = RocketChat.models.Messages.findOneById(message._id); message = Messages.findOneById(message._id);
if (!message || !message.rid) { if (!message || !message.rid) {
return false; return false;
@ -37,13 +40,13 @@ Meteor.methods({
limit: Math.ceil(limit / 2), limit: Math.ceil(limit / 2),
}; };
if (!RocketChat.settings.get('Message_ShowEditedStatus')) { if (!settings.get('Message_ShowEditedStatus')) {
options.fields = { options.fields = {
editedAt: 0, editedAt: 0,
}; };
} }
const messages = RocketChat.models.Messages.findVisibleByRoomIdBeforeTimestamp(message.rid, message.ts, options).fetch(); const messages = Messages.findVisibleByRoomIdBeforeTimestamp(message.rid, message.ts, options).fetch();
const moreBefore = messages.length === options.limit; const moreBefore = messages.length === options.limit;
@ -55,13 +58,13 @@ Meteor.methods({
options.limit = Math.floor(limit / 2); options.limit = Math.floor(limit / 2);
const afterMessages = RocketChat.models.Messages.findVisibleByRoomIdAfterTimestamp(message.rid, message.ts, options).fetch(); const afterMessages = Messages.findVisibleByRoomIdAfterTimestamp(message.rid, message.ts, options).fetch();
const moreAfter = afterMessages.length === options.limit; const moreAfter = afterMessages.length === options.limit;
return { return {
messages: messages.concat(afterMessages) messages: messages.concat(afterMessages)
.map((message) => RocketChat.composeMessageObjectWithUser(message, fromId)), .map((message) => composeMessageObjectWithUser(message, fromId)),
moreBefore, moreBefore,
moreAfter, moreAfter,
}; };

@ -1,12 +1,13 @@
import { Meteor } from 'meteor/meteor'; import { Meteor } from 'meteor/meteor';
import { check } from 'meteor/check'; import { check } from 'meteor/check';
import { callbacks } from 'meteor/rocketchat:callbacks';
Meteor.methods({ Meteor.methods({
logoutCleanUp(user) { logoutCleanUp(user) {
check(user, Object); check(user, Object);
Meteor.defer(function() { Meteor.defer(function() {
RocketChat.callbacks.run('afterLogoutCleanUp', user); callbacks.run('afterLogoutCleanUp', user);
}); });
}, },
}); });

@ -1,5 +1,7 @@
import { Meteor } from 'meteor/meteor'; import { Meteor } from 'meteor/meteor';
import { Match, check } from 'meteor/check'; import { Match, check } from 'meteor/check';
import { Subscriptions, Messages } from 'meteor/rocketchat:models';
import { settings } from 'meteor/rocketchat:settings';
import s from 'underscore.string'; import s from 'underscore.string';
Meteor.methods({ Meteor.methods({
@ -27,7 +29,7 @@ Meteor.methods({
if (!Meteor.call('canAccessRoom', rid, currentUserId)) { if (!Meteor.call('canAccessRoom', rid, currentUserId)) {
return result; return result;
} }
} else if (RocketChat.settings.get('Search.defaultProvider.GlobalSearchEnabled') !== true) { } else if (settings.get('Search.defaultProvider.GlobalSearchEnabled') !== true) {
return result; return result;
} }
@ -187,7 +189,7 @@ Meteor.methods({
$regex: r[1], $regex: r[1],
$options: r[2], $options: r[2],
}; };
} else if (RocketChat.settings.get('Message_AlwaysSearchRegExp')) { } else if (settings.get('Message_AlwaysSearchRegExp')) {
query.msg = { query.msg = {
$regex: text, $regex: text,
$options: 'i', $options: 'i',
@ -216,19 +218,19 @@ Meteor.methods({
query.rid = rid; query.rid = rid;
} else { } else {
query.rid = { query.rid = {
$in: RocketChat.models.Subscriptions.findByUserId(user._id) $in: Subscriptions.findByUserId(user._id)
.fetch() .fetch()
.map((subscription) => subscription.rid), .map((subscription) => subscription.rid),
}; };
} }
if (!RocketChat.settings.get('Message_ShowEditedStatus')) { if (!settings.get('Message_ShowEditedStatus')) {
options.fields = { options.fields = {
editedAt: 0, editedAt: 0,
}; };
} }
result.message.docs = RocketChat.models.Messages.find(query, options).fetch(); result.message.docs = Messages.find(query, options).fetch();
} }
return result; return result;

@ -1,5 +1,7 @@
import { Meteor } from 'meteor/meteor'; import { Meteor } from 'meteor/meteor';
import { check } from 'meteor/check'; import { check } from 'meteor/check';
import { Migrations } from 'meteor/rocketchat:migrations';
import { hasPermission } from 'meteor/rocketchat:authorization';
Meteor.methods({ Meteor.methods({
migrateTo(version) { migrateTo(version) {
@ -13,7 +15,7 @@ Meteor.methods({
const user = Meteor.user(); const user = Meteor.user();
if (!user || RocketChat.authz.hasPermission(user._id, 'run-migration') !== true) { if (!user || hasPermission(user._id, 'run-migration') !== true) {
throw new Meteor.Error('error-not-allowed', 'Not allowed', { throw new Meteor.Error('error-not-allowed', 'Not allowed', {
method: 'migrateTo', method: 'migrateTo',
}); });
@ -21,7 +23,7 @@ Meteor.methods({
this.unblock(); this.unblock();
RocketChat.Migrations.migrateTo(version); Migrations.migrateTo(version);
return version; return version;
}, },
@ -33,6 +35,6 @@ Meteor.methods({
}); });
} }
return RocketChat.Migrations.getVersion(); return Migrations.getVersion();
}, },
}); });

@ -1,5 +1,7 @@
import { Meteor } from 'meteor/meteor'; import { Meteor } from 'meteor/meteor';
import { Match, check } from 'meteor/check'; import { Match, check } from 'meteor/check';
import { Rooms, Subscriptions, Users, Messages } from 'meteor/rocketchat:models';
import { hasPermission } from 'meteor/rocketchat:authorization';
Meteor.methods({ Meteor.methods({
muteUserInRoom(data) { muteUserInRoom(data) {
@ -16,13 +18,13 @@ Meteor.methods({
const fromId = Meteor.userId(); const fromId = Meteor.userId();
if (!RocketChat.authz.hasPermission(fromId, 'mute-user', data.rid)) { if (!hasPermission(fromId, 'mute-user', data.rid)) {
throw new Meteor.Error('error-not-allowed', 'Not allowed', { throw new Meteor.Error('error-not-allowed', 'Not allowed', {
method: 'muteUserInRoom', method: 'muteUserInRoom',
}); });
} }
const room = RocketChat.models.Rooms.findOneById(data.rid); const room = Rooms.findOneById(data.rid);
if (!room) { if (!room) {
throw new Meteor.Error('error-invalid-room', 'Invalid room', { throw new Meteor.Error('error-invalid-room', 'Invalid room', {
@ -37,20 +39,20 @@ Meteor.methods({
}); });
} }
const subscription = RocketChat.models.Subscriptions.findOneByRoomIdAndUsername(data.rid, data.username, { fields: { _id: 1 } }); const subscription = Subscriptions.findOneByRoomIdAndUsername(data.rid, data.username, { fields: { _id: 1 } });
if (!subscription) { if (!subscription) {
throw new Meteor.Error('error-user-not-in-room', 'User is not in this room', { throw new Meteor.Error('error-user-not-in-room', 'User is not in this room', {
method: 'muteUserInRoom', method: 'muteUserInRoom',
}); });
} }
const mutedUser = RocketChat.models.Users.findOneByUsername(data.username); const mutedUser = Users.findOneByUsername(data.username);
RocketChat.models.Rooms.muteUsernameByRoomId(data.rid, mutedUser.username); Rooms.muteUsernameByRoomId(data.rid, mutedUser.username);
const fromUser = RocketChat.models.Users.findOneById(fromId); const fromUser = Users.findOneById(fromId);
RocketChat.models.Messages.createUserMutedWithRoomIdAndUser(data.rid, mutedUser, { Messages.createUserMutedWithRoomIdAndUser(data.rid, mutedUser, {
u: { u: {
_id: fromUser._id, _id: fromUser._id,
username: fromUser.username, username: fromUser.username,

@ -1,5 +1,6 @@
import { Meteor } from 'meteor/meteor'; import { Meteor } from 'meteor/meteor';
import { check } from 'meteor/check'; import { check } from 'meteor/check';
import { Subscriptions } from 'meteor/rocketchat:models';
Meteor.methods({ Meteor.methods({
openRoom(rid) { openRoom(rid) {
@ -11,6 +12,6 @@ Meteor.methods({
}); });
} }
return RocketChat.models.Subscriptions.openByRoomIdAndUserId(rid, Meteor.userId()); return Subscriptions.openByRoomIdAndUserId(rid, Meteor.userId());
}, },
}); });

@ -1,6 +1,7 @@
import { Meteor } from 'meteor/meteor'; import { Meteor } from 'meteor/meteor';
import { check } from 'meteor/check'; import { check } from 'meteor/check';
import { ReadReceipt } from '../../imports/message-read-receipt/server/lib/ReadReceipt'; import { ReadReceipt } from '../../imports/message-read-receipt/server/lib/ReadReceipt';
import { Subscriptions } from 'meteor/rocketchat:models';
Meteor.methods({ Meteor.methods({
readMessages(rid) { readMessages(rid) {
@ -15,9 +16,9 @@ Meteor.methods({
} }
// this prevents cache from updating object reference/pointer // this prevents cache from updating object reference/pointer
const userSubscription = Object.assign({}, RocketChat.models.Subscriptions.findOneByRoomIdAndUserId(rid, userId)); const userSubscription = Object.assign({}, Subscriptions.findOneByRoomIdAndUserId(rid, userId));
RocketChat.models.Subscriptions.setAsReadByRoomIdAndUserId(rid, userId); Subscriptions.setAsReadByRoomIdAndUserId(rid, userId);
Meteor.defer(() => { Meteor.defer(() => {
ReadReceipt.markMessagesAsRead(rid, userId, userSubscription.ls); ReadReceipt.markMessagesAsRead(rid, userId, userSubscription.ls);

@ -3,6 +3,10 @@ import { Match, check } from 'meteor/check';
import { Accounts } from 'meteor/accounts-base'; import { Accounts } from 'meteor/accounts-base';
import s from 'underscore.string'; import s from 'underscore.string';
import * as Mailer from 'meteor/rocketchat:mailer'; import * as Mailer from 'meteor/rocketchat:mailer';
import { Users } from 'meteor/rocketchat:models';
import { settings } from 'meteor/rocketchat:settings';
import { saveCustomFields, validateEmailDomain, passwordPolicy } from 'meteor/rocketchat:lib';
let verifyEmailTemplate = ''; let verifyEmailTemplate = '';
Meteor.startup(() => { Meteor.startup(() => {
Mailer.getTemplateWrapped('Verification_Email', (value) => { Mailer.getTemplateWrapped('Verification_Email', (value) => {
@ -11,9 +15,9 @@ Meteor.startup(() => {
}); });
Meteor.methods({ Meteor.methods({
registerUser(formData) { registerUser(formData) {
const AllowAnonymousRead = RocketChat.settings.get('Accounts_AllowAnonymousRead'); const AllowAnonymousRead = settings.get('Accounts_AllowAnonymousRead');
const AllowAnonymousWrite = RocketChat.settings.get('Accounts_AllowAnonymousWrite'); const AllowAnonymousWrite = settings.get('Accounts_AllowAnonymousWrite');
const manuallyApproveNewUsers = RocketChat.settings.get('Accounts_ManuallyApproveNewUsers'); const manuallyApproveNewUsers = settings.get('Accounts_ManuallyApproveNewUsers');
if (AllowAnonymousRead === true && AllowAnonymousWrite === true && formData.email == null) { if (AllowAnonymousRead === true && AllowAnonymousWrite === true && formData.email == null) {
const userId = Accounts.insertUserDoc({}, { const userId = Accounts.insertUserDoc({}, {
globalRoles: [ globalRoles: [
@ -35,15 +39,15 @@ Meteor.methods({
})); }));
} }
if (RocketChat.settings.get('Accounts_RegistrationForm') === 'Disabled') { if (settings.get('Accounts_RegistrationForm') === 'Disabled') {
throw new Meteor.Error('error-user-registration-disabled', 'User registration is disabled', { method: 'registerUser' }); throw new Meteor.Error('error-user-registration-disabled', 'User registration is disabled', { method: 'registerUser' });
} else if (RocketChat.settings.get('Accounts_RegistrationForm') === 'Secret URL' && (!formData.secretURL || formData.secretURL !== RocketChat.settings.get('Accounts_RegistrationForm_SecretURL'))) { } else if (settings.get('Accounts_RegistrationForm') === 'Secret URL' && (!formData.secretURL || formData.secretURL !== settings.get('Accounts_RegistrationForm_SecretURL'))) {
throw new Meteor.Error ('error-user-registration-secret', 'User registration is only allowed via Secret URL', { method: 'registerUser' }); throw new Meteor.Error ('error-user-registration-secret', 'User registration is only allowed via Secret URL', { method: 'registerUser' });
} }
RocketChat.passwordPolicy.validate(formData.pass); passwordPolicy.validate(formData.pass);
RocketChat.validateEmailDomain(formData.email); validateEmailDomain(formData.email);
const userData = { const userData = {
email: s.trim(formData.email.toLowerCase()), email: s.trim(formData.email.toLowerCase()),
@ -53,7 +57,7 @@ Meteor.methods({
}; };
// Check if user has already been imported and never logged in. If so, set password and let it through // Check if user has already been imported and never logged in. If so, set password and let it through
const importedUser = RocketChat.models.Users.findOneByEmailAddress(s.trim(formData.email.toLowerCase())); const importedUser = Users.findOneByEmailAddress(s.trim(formData.email.toLowerCase()));
let userId; let userId;
if (importedUser && importedUser.importIds && importedUser.importIds.length && !importedUser.lastLogin) { if (importedUser && importedUser.importIds && importedUser.importIds.length && !importedUser.lastLogin) {
Accounts.setPassword(importedUser._id, userData.password); Accounts.setPassword(importedUser._id, userData.password);
@ -62,18 +66,18 @@ Meteor.methods({
userId = Accounts.createUser(userData); userId = Accounts.createUser(userData);
} }
RocketChat.models.Users.setName(userId, s.trim(formData.name)); Users.setName(userId, s.trim(formData.name));
const reason = s.trim(formData.reason); const reason = s.trim(formData.reason);
if (manuallyApproveNewUsers && reason) { if (manuallyApproveNewUsers && reason) {
RocketChat.models.Users.setReason(userId, reason); Users.setReason(userId, reason);
} }
RocketChat.saveCustomFields(userId, formData); saveCustomFields(userId, formData);
try { try {
const subject = Mailer.replace(RocketChat.settings.get('Verification_Email_Subject')); const subject = Mailer.replace(settings.get('Verification_Email_Subject'));
Accounts.emailTemplates.verifyEmail.subject = () => subject; Accounts.emailTemplates.verifyEmail.subject = () => subject;
Accounts.emailTemplates.verifyEmail.html = (userModel, url) => Mailer.replace(Mailer.replacekey(verifyEmailTemplate, 'Verification_Url', url), userModel); Accounts.emailTemplates.verifyEmail.html = (userModel, url) => Mailer.replace(Mailer.replacekey(verifyEmailTemplate, 'Verification_Url', url), userModel);

Loading…
Cancel
Save