account-base package
Files documented
- accounts_common.js
- accounts_rate_limit.js
- globals_client.js
- globals_server.js
- package.js
- url_client.js
- url_server.js
Constants
DEFAULT_LOGIN_EXPIRATION_DAYS = 90. Default login token lifetime. Used by AccountsCommon_getTokenLifetimeMs().
MIN_TOKEN_LIFETIME_CAP_SECS = 3600. Maximum value of "soon". Used by AccountsCommon._tokenExpiresSoon(when).
EXPIRE_TOKENS_INTERVAL_MS = 100000. Frequency of token expiration checks. Used by setExpireTokensInterval(accounts) in accounts_server.js.
CONNECTION_CLOSE_DELAY_MS = 10000. Logout delay for other clients. Used by Meteor.logoutOtherClients(), added from accounts_server.js.
Classes
AccountsClient
url_client.js additions:
_attemptToMatchHash() : Try to match the saved value of window.location.hash to one of the reserved hashes, to trigger an Accounts operation. On success, invokes passed handler which, when called from _initUrlMatching(), will always be defaultSuccessHandler().
_initUrlMatching(): called by constructor. Inits extra data on instance and invokes _attemptToMatchHash()
onResetPasswordLink() Register a function to call when a reset password link is clicked in an email sent by on of the hash handlers. See Accounts-onResetPasswordLink
onEmailVerificationLink() Register a function to call when an email verification link is clicked in an email sent by a hash handler. See Accounts-onEmailVerificationLink
onEnrollmentLink() Register a function to call when an account enrollment link is clicked in an email sent by a hash handler. See Accounts-onEnrollmentLink
- Globals read
window.location.hash. Reserved hashes:
reset-password
verify-email
enroll-account
defaultSuccessHandler()
attemptToMatchHash()
AccountsCommon (accounts_common.js)
Base class for AccountsClient / AccountsServer.
constructor(options).
- initializes
connection, then users.
- Options can contain:
connection, ddpUrl see initConnection()
sendVerificationEmail, forbidClientAccountCreation, restrictCreationByEmailDomain, loginExpirationInDays, and oauthSecretKey (side-effect, not saved). see config(options)
addDefaultRateLimit() : enable per-connection, per-method rate limiter for login, createUser, resetPassword forgotPassword to 5 calls every 10 seconds. Added from accounts_rate_limits.js.
config(options). Set up config for the accounts system. Call this on both the client the server.
- Checks and filters options, before saving them to
_options.
- Setting an unknown option throws
- Setting an already set option throws
- Options can contain:
sendVerificationEmail {Boolean}: Send email address verification emails to new users created from client signups.
forbidClientAccountCreation {Boolean} Do not allow clients to create accounts directly. Security issue #828 exists if this is not called on both client and server
restrictCreationByEmailDomain {Function or String} Require created users to have an email matching the function or having the string as domain.
loginExpirationInDays {Number} Number of days since login until a user is logged out (login token expires).
oauthSecretKey When using the oauth-encryption package, the 16 byte key using to encrypt sensitive account credentials in the database, encoded in base64.
- Warns if the
oauth-encryption package is not present
- Throws if used on client
- Removed from saved config after passing if to the
oauth-encryption package
ConfigError: legacy, initialized from service-configuration package during Meteor.startup().
connection: the MongoDB connection. If set to null, the users collection will be local (avoid !)
LoginCancelledError: specific error class to use when a login sequence is cancelled
loginServiceConfiguration: legacy, initialized from service-configuration package during Meteor.startup().
removeDefaultRateLimit() : disable the rate limiter for the methods below (from accounts_rate_limits.js).
user(): returns the currently logged-in user by finding it from Mongo based on the userId() value. Defaults to null.
userId(): Error("userId method not implemented") Basically an abstract method to be refined in child classes
users: the users collection
onLogin(func): Register a callback to be called after a login attempt succeeds.
onLoginFailure(func): Register a callback to be called after a login attempt fails.
_getTokenLifetimeMs(): get the remaining login token lifetime in msec. Taken from loginExpirationInDays if it exists. Defaults to DEFAULT_LOGIN_EXPIRATION_DAYS (= 90) days in msec.
_initConnection(options) - Options can contain
connection: the connection on which to load the users collection
ddpUrl: if connection is not set, connect to this URL
- some non-portable, going-away, mechanism for OAuth
- if none if available,
Meteor.connection will be used as a default
_onLoginHook(). As per hook.js, Hook system is under development. Use onLogin(func) to make use of it.
_onLoginFailureHook(). As per hook.js, Hook system is under development. Use onLoginFailure(func) to make use of it.
_options = {} - used directly by packages like accounts-password and `accounts-ui-unstyled.
_tokenExpiration(when): when is a token (timestamp, used to be any number in earlier versions). It is converted to Date, and added with _getTokenLifetimeMs() to return the expiration date for the when.
_tokenExpiresSoon(when): when is a token (timestamp). True if it expires in less the smaller of 0.1 * _getTokenLifetimeMs()and 1 hour.
- side-effect in
accounts_rate_limits.js : loading this file initializes the rate-limiter for addDefaultRateLimit() and removeDefaultRateLimit(). This is why the package has a dependency on ddp-rate-limiter.
AccountsServer
- methods. These 3 methods are public but marked (in 1.2.1) as likely not to remain so
resetPassword() : generates a password reset link (from token)
verifyEmail(): generates an email verification link (from token)
enrollAccount(): generates an account enrollment link (from token)
AccountsTest
- methods
attemptToMatchHash() facade for attemptToMatchHash() function
- Globals read
Accounts (see globals_server.js)
Meteor
userId: a copy of the Accounts.usedId() method
user(): a copy of the Accounts.user() method
Functions
url_client.js
defaultSuccessHandler() : suspends autologin, invokes other handles for the same hash, passing them a closure capable of enabling autologin.
Dependencies / Exports (package.js et al.)
Exports
| Symbol |
Client |
Server |
Test |
| Accounts |
O |
O |
O |
| AccountsClient |
O |
|
|
| AccountsServer |
|
O |
|
| AccountsTest |
|
|
O |
Dependencies
| Package |
Client |
Server |
Specifics |
| underscore |
O |
O |
|
| ecmascript |
O |
O |
|
| ddp-rate-limiter |
O |
O |
|
| localstorage |
O |
|
|
| tracker |
O |
|
|
| check |
|
O |
|
| random |
O |
O |
|
| ejson |
|
O |
|
| callback-hook |
O |
O |
|
| service-configuration |
O |
O |
unordered (needs Accounts.connection) |
| ddp |
O |
O |
|
| mongo |
O |
O |
expected abstraction in the future |
| blaze |
O |
|
weak: define {{currentUser}} |
| autopublish |
|
O |
weak: publish extra users fields |
| oauth-encryption |
|
O |
weak |
| NPM crypto |
|
O |
in accounts_server.js |
Objects (globals_(client|server).js)
Accounts
- on client:
new AccountsClient() (extends AccountsCommon)
- on server:
new AccountsServer(Meteor.server) (extends AccountsCommon)
Meteor
- new field
users for the users collection. Name is expected to become configurable in future versions.