1.2.6 • Published 2 years ago

@codestra/authentication-manager v1.2.6

Weekly downloads
-
License
MIT
Repository
github
Last release
2 years ago

@codestra/authentication-manager

authentication-manager is a package that provides helper functions for user management.

Installation

Use npm for installation:

npm install @codestra/authentication-manager

Or use yarn for installation:

yarn add @codestra/authentication-manager

Usage

You need to have a running mongoose connection.

Example

The following is a full example of all the functions and how you can use them.

// The model needs to at least have these fields
const UserSchema = new mongoose.Schema({
  email: { type: String, required: true, unique: true },
  password: { type: String, required: true },
  salt: { type: String },
  passwordResetToken: { type: String },
  passwordResetExpires: { type: Number },
  activated: { type: Boolean },
  activationToken: { type: String },
});
const User = mongoose.model('User', UserSchema);

// creates a new user and returns the modelSignUpData._id and modelSignUpData.activationToken
const modelSignUpData = await modelSignUp({
  Model: User,
  variables: { email: 'foo@bar.io', password: 'verymuchsecure' },
});

// activates the user with the activation token and returns a authentication token
const authenticationTokenActivate = await modelActivate({
  Model: User,
  variables: { activationToken: modelSignUpData.activationToken },
});

// returns the authentication modelSignInData.token and modelSignInData._id if the password was right
const modelSignInData = await modelSignIn({
  Model: User,
  variables: { email: 'foo@bar.io', password: 'verymuchsecure' },
});

// verifies the authentication token
const authentication1 = modelVerify({ token: authenticationTokenActivate });
// or
const authentication2 = modelVerify({ token: modelSignInData.token });

// returns a password reset token that we need to give the user to reset
const passwordResetToken = await modelRequestResetPassword({
  Model: User,
  variables: { email: 'foo@bar.io' },
});

// verifies that the password reset token was right and sets the new password
const email = await modelRequestUpdatePassword({
  Model: Vendor,
  variables: { passwordResetToken, email: 'foo@bar.io', password: 'newverysecure' },
});

Functions

genRandomString(length)

ParamTypeDescription
lengthnumberLength of the random string.

createHash(password, salt)

ParamTypeDescription
passwordstringList of required fields.
saltstringData to be validated.

createHash~hash

modelActivate(parameters) ⇒ Promise.<string>

Returns: Promise.<string> - the jwt for the authentication

ParamTypeDescription
parametersObjectfunction parameters
parameters.Modelmongoose.Modelmongodb model
parameters.variables.activationTokenstringthe activation token for which model we want to activate the account
parameters.onCompletedfunctioncallback on completed. Returns the token.

modelRequestResetPassword(parameters) ⇒ Promise.<string>

Returns: Promise.<string> - returns the reset token

ParamTypeDescription
parametersObjectfunction parameters
parameters.Modelmongoose.Modelmongodb model
parameters.variables.emailstringthe email for which we want to reset the password
parameters.onCompletedfunctioncallback on completed. Returns the passwordResetToken

modelRequestUpdatePassword(parameters) ⇒ Promise.<string>

Returns: Promise.<string> - the found email for which we want to resend the activation

ParamTypeDescription
parametersObjectfunction parameters
parameters.Modelmongoose.Modelmongodb model
parameters.variables.emailstringthe email for which we want to resend the activation
parameters.variables.passwordstringthe new password
parameters.variables.passwordResetTokenstringthe passwordResetToken
parameters.onCompletedfunctioncallback on completed. Returns the e-mail.

modelResendActivation(parameters) ⇒ Promise.<string>

Returns: Promise.<string> - the found email for which we want to resend the activation

ParamTypeDescription
parametersObjectfunction parameters
parameters.Modelmongoose.Modelmongodb model
parameters.variables.emailstringthe email for which we want to resend the activation
parameters.onCompletedfunctioncallback on completed. Returns the activationToken.

modelSignIn(parameters) ⇒ Promise.<string>

Returns: Promise.<string> - the jwt for the authentication

ParamTypeDescription
parametersObjectfunction parameters
parameters.Modelmongoose.Modelmongodb model
parameters.variables.emailstringthe email
parameters.variables.passwordstringthe password
parameters.onCompletedfunctioncallback on completed. Returns the jwt

modelSignUp(parameters) ⇒ Promise.<{activationToken: string, _id: string}>

Returns: Promise.<{activationToken: string, _id: string}> - the activationtoken and _id as a string

ParamTypeDescription
parametersObjectfunction parameters
parameters.Modelmongoose.Modelmongodb model
parameters.variables.emailstringthe email which will be used for registration made lowercase
parameters.variables.passwordstringthe password
parameters.onCompletedfunctioncallback on completed. Returns the _id

modelVerify(parameters) ⇒ JwtPayload | null

Returns: JwtPayload | null - the jwt for the authentication. If verified correctly, returns {id} so for mongoose, you need to make it _id

ParamTypeDescription
parametersObjectfunction parameters
parameters.tokenstringmongodb model

Contributing

Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.

Please make sure to update tests as appropriate.

License

MIT