mirror of
https://github.com/awatertrevi/infisical.git
synced 2026-10-15 11:38:55 +00:00
89 lines
1.9 KiB
TypeScript
89 lines
1.9 KiB
TypeScript
import * as Sentry from '@sentry/node';
|
|
import { User, IUser } from '../models';
|
|
|
|
/**
|
|
* Initialize a user under email [email]
|
|
* @param {Object} obj
|
|
* @param {String} obj.email - email of user to initialize
|
|
* @returns {Object} user - the initialized user
|
|
*/
|
|
const setupAccount = async ({ email }: { email: string }) => {
|
|
let user;
|
|
try {
|
|
user = await new User({
|
|
email
|
|
}).save();
|
|
} catch (err) {
|
|
Sentry.setUser({ email });
|
|
Sentry.captureException(err);
|
|
throw new Error('Failed to set up account');
|
|
}
|
|
|
|
return user;
|
|
};
|
|
|
|
/**
|
|
* Finish setting up user
|
|
* @param {Object} obj
|
|
* @param {String} obj.userId - id of user to finish setting up
|
|
* @param {String} obj.firstName - first name of user
|
|
* @param {String} obj.lastName - last name of user
|
|
* @param {String} obj.publicKey - publickey of user
|
|
* @param {String} obj.encryptedPrivateKey - (encrypted) private key of user
|
|
* @param {String} obj.iv - iv for (encrypted) private key of user
|
|
* @param {String} obj.tag - tag for (encrypted) private key of user
|
|
* @param {String} obj.salt - salt for auth SRP
|
|
* @param {String} obj.verifier - verifier for auth SRP
|
|
* @returns {Object} user - the completed user
|
|
*/
|
|
const completeAccount = async ({
|
|
userId,
|
|
firstName,
|
|
lastName,
|
|
publicKey,
|
|
encryptedPrivateKey,
|
|
iv,
|
|
tag,
|
|
salt,
|
|
verifier
|
|
}: {
|
|
userId: string;
|
|
firstName: string;
|
|
lastName: string;
|
|
publicKey: string;
|
|
encryptedPrivateKey: string;
|
|
iv: string;
|
|
tag: string;
|
|
salt: string;
|
|
verifier: string;
|
|
}) => {
|
|
let user;
|
|
try {
|
|
const options = {
|
|
new: true
|
|
};
|
|
user = await User.findByIdAndUpdate(
|
|
userId,
|
|
{
|
|
firstName,
|
|
lastName,
|
|
publicKey,
|
|
encryptedPrivateKey,
|
|
iv,
|
|
tag,
|
|
salt,
|
|
verifier
|
|
},
|
|
options
|
|
);
|
|
} catch (err) {
|
|
Sentry.setUser(null);
|
|
Sentry.captureException(err);
|
|
throw new Error('Failed to complete account set up');
|
|
}
|
|
|
|
return user;
|
|
};
|
|
|
|
export { setupAccount, completeAccount };
|