Source: controllers/authentications/login.controller.js

/**
 * API login controller for local username and password authentication
 *
 * @memberof module:controllers/authentication
 * @param {Object} request - HTTP request object
 * @param {Object} response - HTTP response callback object
 * @param {Object} next - Next route handler callback object
 * @returns - Returns HTTP response body
 */
const login = async (request, response, next) => {

  try {

    // Get logged in user from the request object
    const loggedInUser = request.user;

    // Generate jwt token for logged in user.
    const jwt = await loggedInUser.generateJWT();

    // Set last login for user to now
    loggedInUser.lastLogin = new Date();
    await loggedInUser.save();

    const responseBody = response.status(201).json({
      status: 201,
      message: 'SUCCESS: JSON Web Token generated.',
      token: jwt,
    });
  
    return responseBody;
  
  } catch (error) {
    next(error);
  }
};

export { login };
export default login;