@memberjunction/core-actions 2.80.1 → 2.82.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/custom/user-management/assign-user-roles.action.d.ts +12 -0
- package/dist/custom/user-management/assign-user-roles.action.d.ts.map +1 -0
- package/dist/custom/user-management/assign-user-roles.action.js +165 -0
- package/dist/custom/user-management/assign-user-roles.action.js.map +1 -0
- package/dist/custom/user-management/check-user-permission.action.d.ts +11 -0
- package/dist/custom/user-management/check-user-permission.action.d.ts.map +1 -0
- package/dist/custom/user-management/check-user-permission.action.js +146 -0
- package/dist/custom/user-management/check-user-permission.action.js.map +1 -0
- package/dist/custom/user-management/create-employee.action.d.ts +12 -0
- package/dist/custom/user-management/create-employee.action.d.ts.map +1 -0
- package/dist/custom/user-management/create-employee.action.js +139 -0
- package/dist/custom/user-management/create-employee.action.js.map +1 -0
- package/dist/custom/user-management/create-user.action.d.ts +12 -0
- package/dist/custom/user-management/create-user.action.d.ts.map +1 -0
- package/dist/custom/user-management/create-user.action.js +130 -0
- package/dist/custom/user-management/create-user.action.js.map +1 -0
- package/dist/custom/user-management/validate-email-unique.action.d.ts +11 -0
- package/dist/custom/user-management/validate-email-unique.action.d.ts.map +1 -0
- package/dist/custom/user-management/validate-email-unique.action.js +97 -0
- package/dist/custom/user-management/validate-email-unique.action.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +16 -0
- package/dist/index.js.map +1 -1
- package/package.json +11 -11
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { ActionResultSimple, RunActionParams } from "@memberjunction/actions-base";
|
|
2
|
+
import { BaseAction } from '@memberjunction/actions';
|
|
3
|
+
/**
|
|
4
|
+
* Assigns one or more roles to a user by creating UserRole associations.
|
|
5
|
+
* This action accepts either a single role name or an array of role names.
|
|
6
|
+
* It gracefully handles both cases and assigns all specified roles to the user.
|
|
7
|
+
*/
|
|
8
|
+
export declare class AssignUserRolesAction extends BaseAction {
|
|
9
|
+
InternalRunAction(params: RunActionParams): Promise<ActionResultSimple>;
|
|
10
|
+
}
|
|
11
|
+
export declare function LoadAssignUserRolesAction(): void;
|
|
12
|
+
//# sourceMappingURL=assign-user-roles.action.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assign-user-roles.action.d.ts","sourceRoot":"","sources":["../../../src/custom/user-management/assign-user-roles.action.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAEnF,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAKrD;;;;GAIG;AACH,qBACa,qBAAsB,SAAQ,UAAU;IAC3C,iBAAiB,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,kBAAkB,CAAC;CAmJhF;AAED,wBAAgB,yBAAyB,SAExC"}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.LoadAssignUserRolesAction = exports.AssignUserRolesAction = void 0;
|
|
10
|
+
const global_1 = require("@memberjunction/global");
|
|
11
|
+
const actions_1 = require("@memberjunction/actions");
|
|
12
|
+
const core_1 = require("@memberjunction/core");
|
|
13
|
+
const sqlserver_dataprovider_1 = require("@memberjunction/sqlserver-dataprovider");
|
|
14
|
+
/**
|
|
15
|
+
* Assigns one or more roles to a user by creating UserRole associations.
|
|
16
|
+
* This action accepts either a single role name or an array of role names.
|
|
17
|
+
* It gracefully handles both cases and assigns all specified roles to the user.
|
|
18
|
+
*/
|
|
19
|
+
let AssignUserRolesAction = class AssignUserRolesAction extends actions_1.BaseAction {
|
|
20
|
+
async InternalRunAction(params) {
|
|
21
|
+
try {
|
|
22
|
+
// Extract parameters
|
|
23
|
+
const userID = params.Params.find(p => p.Name === 'UserID')?.Value;
|
|
24
|
+
const roleNamesParam = params.Params.find(p => p.Name === 'RoleNames')?.Value;
|
|
25
|
+
const roleNameParam = params.Params.find(p => p.Name === 'RoleName')?.Value;
|
|
26
|
+
// Validate required fields
|
|
27
|
+
if (!userID) {
|
|
28
|
+
return {
|
|
29
|
+
Success: false,
|
|
30
|
+
ResultCode: 'VALIDATION_ERROR',
|
|
31
|
+
Message: 'UserID is required'
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
// Handle both single and multiple role inputs
|
|
35
|
+
let roleNames = [];
|
|
36
|
+
if (roleNamesParam) {
|
|
37
|
+
// If RoleNames is provided, use it
|
|
38
|
+
if (Array.isArray(roleNamesParam)) {
|
|
39
|
+
roleNames = roleNamesParam;
|
|
40
|
+
}
|
|
41
|
+
else if (typeof roleNamesParam === 'string') {
|
|
42
|
+
roleNames = [roleNamesParam];
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
else if (roleNameParam) {
|
|
46
|
+
// If RoleName (singular) is provided, use it
|
|
47
|
+
if (Array.isArray(roleNameParam)) {
|
|
48
|
+
roleNames = roleNameParam;
|
|
49
|
+
}
|
|
50
|
+
else if (typeof roleNameParam === 'string') {
|
|
51
|
+
roleNames = [roleNameParam];
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
if (roleNames.length === 0) {
|
|
55
|
+
return {
|
|
56
|
+
Success: false,
|
|
57
|
+
ResultCode: 'VALIDATION_ERROR',
|
|
58
|
+
Message: 'RoleNames or RoleName must be provided as a string or array'
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
const md = new core_1.Metadata();
|
|
62
|
+
// Validate user exists - check UserCache first
|
|
63
|
+
// For newly created users, the cache might not be updated yet
|
|
64
|
+
const user = sqlserver_dataprovider_1.UserCache.Users?.find(u => u.ID === userID);
|
|
65
|
+
const existingRoleIDs = user?.UserRoles ? user.UserRoles.map(ur => ur.RoleID) : [];
|
|
66
|
+
// Get all roles and validate they exist using Metadata cache
|
|
67
|
+
const allRoles = md.Roles;
|
|
68
|
+
const foundRoles = roleNames.map(name => {
|
|
69
|
+
return allRoles.find(r => r.Name === name);
|
|
70
|
+
}).filter(r => r != null);
|
|
71
|
+
const foundRoleNames = foundRoles.map(r => r.Name);
|
|
72
|
+
const missingRoles = roleNames.filter(name => !foundRoleNames.includes(name));
|
|
73
|
+
if (missingRoles.length > 0) {
|
|
74
|
+
return {
|
|
75
|
+
Success: false,
|
|
76
|
+
ResultCode: 'ROLES_NOT_FOUND',
|
|
77
|
+
Message: `The following roles do not exist: ${missingRoles.join(', ')}`
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
// Process each role
|
|
81
|
+
const assignedRoles = [];
|
|
82
|
+
const skippedRoles = [];
|
|
83
|
+
const errors = [];
|
|
84
|
+
for (const role of foundRoles) {
|
|
85
|
+
if (existingRoleIDs.includes(role.ID)) {
|
|
86
|
+
skippedRoles.push(role.Name);
|
|
87
|
+
continue;
|
|
88
|
+
}
|
|
89
|
+
try {
|
|
90
|
+
// Create UserRole entity
|
|
91
|
+
const userRole = await md.GetEntityObject('User Roles', params.ContextUser);
|
|
92
|
+
userRole.UserID = userID;
|
|
93
|
+
userRole.RoleID = role.ID;
|
|
94
|
+
if (await userRole.Save()) {
|
|
95
|
+
assignedRoles.push({
|
|
96
|
+
roleID: role.ID,
|
|
97
|
+
roleName: role.Name,
|
|
98
|
+
userRoleID: userRole.ID
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
errors.push(`Failed to assign role '${role.Name}'`);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
catch (e) {
|
|
106
|
+
errors.push(`Error assigning role '${role.Name}': ${e.message}`);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
// Prepare result
|
|
110
|
+
let message = '';
|
|
111
|
+
if (assignedRoles.length > 0) {
|
|
112
|
+
message += `Successfully assigned ${assignedRoles.length} role(s): ${assignedRoles.map(r => r.roleName).join(', ')}. `;
|
|
113
|
+
}
|
|
114
|
+
if (skippedRoles.length > 0) {
|
|
115
|
+
message += `Skipped ${skippedRoles.length} already assigned role(s): ${skippedRoles.join(', ')}. `;
|
|
116
|
+
}
|
|
117
|
+
if (errors.length > 0) {
|
|
118
|
+
message += `Errors: ${errors.join('; ')}`;
|
|
119
|
+
}
|
|
120
|
+
// Add output parameters
|
|
121
|
+
params.Params.push({
|
|
122
|
+
Name: 'AssignedRoleIDs',
|
|
123
|
+
Value: assignedRoles.map(r => r.roleID),
|
|
124
|
+
Type: 'Output'
|
|
125
|
+
});
|
|
126
|
+
params.Params.push({
|
|
127
|
+
Name: 'AssignedUserRoleIDs',
|
|
128
|
+
Value: assignedRoles.map(r => r.userRoleID),
|
|
129
|
+
Type: 'Output'
|
|
130
|
+
});
|
|
131
|
+
params.Params.push({
|
|
132
|
+
Name: 'AssignedRoleNames',
|
|
133
|
+
Value: assignedRoles.map(r => r.roleName),
|
|
134
|
+
Type: 'Output'
|
|
135
|
+
});
|
|
136
|
+
params.Params.push({
|
|
137
|
+
Name: 'AssignedCount',
|
|
138
|
+
Value: assignedRoles.length,
|
|
139
|
+
Type: 'Output'
|
|
140
|
+
});
|
|
141
|
+
return {
|
|
142
|
+
Success: errors.length === 0 && (assignedRoles.length > 0 || skippedRoles.length > 0),
|
|
143
|
+
ResultCode: errors.length > 0 ? 'PARTIAL_SUCCESS' : 'SUCCESS',
|
|
144
|
+
Message: message.trim(),
|
|
145
|
+
Params: params.Params
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
catch (e) {
|
|
149
|
+
return {
|
|
150
|
+
Success: false,
|
|
151
|
+
ResultCode: 'FAILED',
|
|
152
|
+
Message: `Error assigning user roles: ${e.message}`
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
};
|
|
157
|
+
exports.AssignUserRolesAction = AssignUserRolesAction;
|
|
158
|
+
exports.AssignUserRolesAction = AssignUserRolesAction = __decorate([
|
|
159
|
+
(0, global_1.RegisterClass)(actions_1.BaseAction, "AssignUserRolesAction")
|
|
160
|
+
], AssignUserRolesAction);
|
|
161
|
+
function LoadAssignUserRolesAction() {
|
|
162
|
+
// Prevent tree shaking
|
|
163
|
+
}
|
|
164
|
+
exports.LoadAssignUserRolesAction = LoadAssignUserRolesAction;
|
|
165
|
+
//# sourceMappingURL=assign-user-roles.action.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assign-user-roles.action.js","sourceRoot":"","sources":["../../../src/custom/user-management/assign-user-roles.action.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { ActionResultSimple, RunActionParams } from "@memberjunction/actions-base";
|
|
2
|
+
import { BaseAction } from '@memberjunction/actions';
|
|
3
|
+
/**
|
|
4
|
+
* Verifies if the current user has a specific role or permission to perform administrative tasks.
|
|
5
|
+
* Supports checking for roles, authorizations, or entity permissions.
|
|
6
|
+
*/
|
|
7
|
+
export declare class CheckUserPermissionAction extends BaseAction {
|
|
8
|
+
InternalRunAction(params: RunActionParams): Promise<ActionResultSimple>;
|
|
9
|
+
}
|
|
10
|
+
export declare function LoadCheckUserPermissionAction(): void;
|
|
11
|
+
//# sourceMappingURL=check-user-permission.action.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check-user-permission.action.d.ts","sourceRoot":"","sources":["../../../src/custom/user-management/check-user-permission.action.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAEnF,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAIrD;;;GAGG;AACH,qBACa,yBAA0B,SAAQ,UAAU;IAC/C,iBAAiB,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,kBAAkB,CAAC;CA6IhF;AAED,wBAAgB,6BAA6B,SAE5C"}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.LoadCheckUserPermissionAction = exports.CheckUserPermissionAction = void 0;
|
|
10
|
+
const global_1 = require("@memberjunction/global");
|
|
11
|
+
const actions_1 = require("@memberjunction/actions");
|
|
12
|
+
const core_1 = require("@memberjunction/core");
|
|
13
|
+
const sqlserver_dataprovider_1 = require("@memberjunction/sqlserver-dataprovider");
|
|
14
|
+
/**
|
|
15
|
+
* Verifies if the current user has a specific role or permission to perform administrative tasks.
|
|
16
|
+
* Supports checking for roles, authorizations, or entity permissions.
|
|
17
|
+
*/
|
|
18
|
+
let CheckUserPermissionAction = class CheckUserPermissionAction extends actions_1.BaseAction {
|
|
19
|
+
async InternalRunAction(params) {
|
|
20
|
+
try {
|
|
21
|
+
// Extract parameters
|
|
22
|
+
const permissionType = params.Params.find(p => p.Name === 'PermissionType')?.Value || 'Role';
|
|
23
|
+
const permissionName = params.Params.find(p => p.Name === 'PermissionName')?.Value;
|
|
24
|
+
const userID = params.Params.find(p => p.Name === 'UserID')?.Value || params.ContextUser?.ID;
|
|
25
|
+
if (!permissionName) {
|
|
26
|
+
return {
|
|
27
|
+
Success: false,
|
|
28
|
+
ResultCode: 'VALIDATION_ERROR',
|
|
29
|
+
Message: 'PermissionName parameter is required'
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
// Validate permission type
|
|
33
|
+
const validTypes = ['Role', 'Authorization', 'EntityPermission'];
|
|
34
|
+
if (!validTypes.includes(permissionType)) {
|
|
35
|
+
return {
|
|
36
|
+
Success: false,
|
|
37
|
+
ResultCode: 'INVALID_PERMISSION_TYPE',
|
|
38
|
+
Message: `Invalid permission type. Must be one of: ${validTypes.join(', ')}`
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
const currentUser = params.ContextUser;
|
|
42
|
+
if (!currentUser && !userID) {
|
|
43
|
+
return {
|
|
44
|
+
Success: false,
|
|
45
|
+
ResultCode: 'PERMISSION_DENIED',
|
|
46
|
+
Message: 'No authenticated user context found and no UserID provided'
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
let hasPermission = false;
|
|
50
|
+
const userRoles = [];
|
|
51
|
+
// Check based on permission type
|
|
52
|
+
switch (permissionType) {
|
|
53
|
+
case 'Role':
|
|
54
|
+
// Get user's roles from UserCache
|
|
55
|
+
const cachedUser = sqlserver_dataprovider_1.UserCache.Users?.find(u => u.ID === userID);
|
|
56
|
+
if (cachedUser && cachedUser.UserRoles) {
|
|
57
|
+
cachedUser.UserRoles.forEach(ur => userRoles.push(ur.Role));
|
|
58
|
+
hasPermission = cachedUser.UserRoles.some(ur => ur.Role === permissionName);
|
|
59
|
+
}
|
|
60
|
+
break;
|
|
61
|
+
case 'Authorization':
|
|
62
|
+
// Check authorization roles
|
|
63
|
+
const authRv = new core_1.RunView();
|
|
64
|
+
const authResult = await authRv.RunView({
|
|
65
|
+
EntityName: 'Authorization Roles',
|
|
66
|
+
ExtraFilter: `RoleID IN (SELECT RoleID FROM ${core_1.Metadata.Provider.ConfigData.MJCoreSchemaName}.vwUserRoles WHERE UserID='${userID}') AND AuthorizationID IN (SELECT ID FROM ${core_1.Metadata.Provider.ConfigData.MJCoreSchemaName}.vwAuthorizations WHERE Name='${permissionName}')`,
|
|
67
|
+
ResultType: 'simple'
|
|
68
|
+
}, currentUser);
|
|
69
|
+
hasPermission = authResult.Success && authResult.Results && authResult.Results.length > 0;
|
|
70
|
+
break;
|
|
71
|
+
case 'EntityPermission':
|
|
72
|
+
// Use the Metadata API to check entity permissions properly
|
|
73
|
+
const md = new core_1.Metadata();
|
|
74
|
+
const entityInfo = md.EntityByName(permissionName);
|
|
75
|
+
if (!entityInfo) {
|
|
76
|
+
return {
|
|
77
|
+
Success: false,
|
|
78
|
+
ResultCode: 'ENTITY_NOT_FOUND',
|
|
79
|
+
Message: `Entity '${permissionName}' not found`
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
// Get user permissions for this entity - Note: MJCore has typo in method name
|
|
83
|
+
const userPermissions = entityInfo.GetUserPermisions(currentUser);
|
|
84
|
+
// For EntityPermission, check if user has any permission (for HasPermission output)
|
|
85
|
+
hasPermission = userPermissions.CanCreate || userPermissions.CanRead ||
|
|
86
|
+
userPermissions.CanUpdate || userPermissions.CanDelete;
|
|
87
|
+
// Add all CRUD permissions as output parameters
|
|
88
|
+
params.Params.push({
|
|
89
|
+
Name: 'CanCreate',
|
|
90
|
+
Value: userPermissions.CanCreate,
|
|
91
|
+
Type: 'Output'
|
|
92
|
+
}, {
|
|
93
|
+
Name: 'CanUpdate',
|
|
94
|
+
Value: userPermissions.CanUpdate,
|
|
95
|
+
Type: 'Output'
|
|
96
|
+
}, {
|
|
97
|
+
Name: 'CanRead',
|
|
98
|
+
Value: userPermissions.CanRead,
|
|
99
|
+
Type: 'Output'
|
|
100
|
+
}, {
|
|
101
|
+
Name: 'CanDelete',
|
|
102
|
+
Value: userPermissions.CanDelete,
|
|
103
|
+
Type: 'Output'
|
|
104
|
+
});
|
|
105
|
+
break;
|
|
106
|
+
}
|
|
107
|
+
// Add output parameters
|
|
108
|
+
params.Params.push({
|
|
109
|
+
Name: 'HasPermission',
|
|
110
|
+
Value: hasPermission,
|
|
111
|
+
Type: 'Output'
|
|
112
|
+
});
|
|
113
|
+
if (userRoles.length > 0) {
|
|
114
|
+
params.Params.push({
|
|
115
|
+
Name: 'UserRoles',
|
|
116
|
+
Value: userRoles,
|
|
117
|
+
Type: 'Output'
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
return {
|
|
121
|
+
Success: true,
|
|
122
|
+
ResultCode: hasPermission ? 'SUCCESS' : 'PERMISSION_DENIED',
|
|
123
|
+
Message: hasPermission
|
|
124
|
+
? `User has required ${permissionType}: ${permissionName}`
|
|
125
|
+
: `User does not have required ${permissionType}: ${permissionName}`,
|
|
126
|
+
Params: params.Params
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
catch (e) {
|
|
130
|
+
return {
|
|
131
|
+
Success: false,
|
|
132
|
+
ResultCode: 'FAILED',
|
|
133
|
+
Message: `Error checking user permission: ${e.message}`
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
};
|
|
138
|
+
exports.CheckUserPermissionAction = CheckUserPermissionAction;
|
|
139
|
+
exports.CheckUserPermissionAction = CheckUserPermissionAction = __decorate([
|
|
140
|
+
(0, global_1.RegisterClass)(actions_1.BaseAction, "CheckUserPermissionAction")
|
|
141
|
+
], CheckUserPermissionAction);
|
|
142
|
+
function LoadCheckUserPermissionAction() {
|
|
143
|
+
// Prevent tree shaking
|
|
144
|
+
}
|
|
145
|
+
exports.LoadCheckUserPermissionAction = LoadCheckUserPermissionAction;
|
|
146
|
+
//# sourceMappingURL=check-user-permission.action.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check-user-permission.action.js","sourceRoot":"","sources":["../../../src/custom/user-management/check-user-permission.action.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { ActionResultSimple, RunActionParams } from "@memberjunction/actions-base";
|
|
2
|
+
import { CreateRecordAction } from "../crud/create-record.action";
|
|
3
|
+
/**
|
|
4
|
+
* Creates a new employee record in the MemberJunction system.
|
|
5
|
+
* This action extends CreateRecordAction to leverage existing record creation functionality
|
|
6
|
+
* while adding employee-specific validation and business logic.
|
|
7
|
+
*/
|
|
8
|
+
export declare class CreateEmployeeAction extends CreateRecordAction {
|
|
9
|
+
InternalRunAction(params: RunActionParams): Promise<ActionResultSimple>;
|
|
10
|
+
}
|
|
11
|
+
export declare function LoadCreateEmployeeAction(): void;
|
|
12
|
+
//# sourceMappingURL=create-employee.action.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-employee.action.d.ts","sourceRoot":"","sources":["../../../src/custom/user-management/create-employee.action.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAEnF,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAIlE;;;;GAIG;AACH,qBACa,oBAAqB,SAAQ,kBAAkB;IAClD,iBAAiB,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,kBAAkB,CAAC;CA0HhF;AAED,wBAAgB,wBAAwB,SAEvC"}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.LoadCreateEmployeeAction = exports.CreateEmployeeAction = void 0;
|
|
10
|
+
const global_1 = require("@memberjunction/global");
|
|
11
|
+
const create_record_action_1 = require("../crud/create-record.action");
|
|
12
|
+
const actions_1 = require("@memberjunction/actions");
|
|
13
|
+
const core_1 = require("@memberjunction/core");
|
|
14
|
+
/**
|
|
15
|
+
* Creates a new employee record in the MemberJunction system.
|
|
16
|
+
* This action extends CreateRecordAction to leverage existing record creation functionality
|
|
17
|
+
* while adding employee-specific validation and business logic.
|
|
18
|
+
*/
|
|
19
|
+
let CreateEmployeeAction = class CreateEmployeeAction extends create_record_action_1.CreateRecordAction {
|
|
20
|
+
async InternalRunAction(params) {
|
|
21
|
+
try {
|
|
22
|
+
// Extract employee-specific parameters
|
|
23
|
+
const email = params.Params.find(p => p.Name === 'Email')?.Value;
|
|
24
|
+
const firstName = params.Params.find(p => p.Name === 'FirstName')?.Value;
|
|
25
|
+
const lastName = params.Params.find(p => p.Name === 'LastName')?.Value;
|
|
26
|
+
const title = params.Params.find(p => p.Name === 'Title')?.Value;
|
|
27
|
+
const phone = params.Params.find(p => p.Name === 'Phone')?.Value;
|
|
28
|
+
const companyID = params.Params.find(p => p.Name === 'CompanyID')?.Value;
|
|
29
|
+
const supervisorID = params.Params.find(p => p.Name === 'SupervisorID')?.Value;
|
|
30
|
+
const active = params.Params.find(p => p.Name === 'Active')?.Value !== false;
|
|
31
|
+
// Validate required fields
|
|
32
|
+
if (!email || !firstName || !lastName || !companyID) {
|
|
33
|
+
return {
|
|
34
|
+
Success: false,
|
|
35
|
+
ResultCode: 'VALIDATION_ERROR',
|
|
36
|
+
Message: 'Email, FirstName, LastName, and CompanyID are required'
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
const rv = new core_1.RunView();
|
|
40
|
+
// Check if email already exists for another employee
|
|
41
|
+
const existingEmployee = await rv.RunView({
|
|
42
|
+
EntityName: 'Employees',
|
|
43
|
+
ExtraFilter: `Email='${email.replace(/'/g, "''")}'`,
|
|
44
|
+
ResultType: 'simple'
|
|
45
|
+
}, params.ContextUser);
|
|
46
|
+
if (existingEmployee.Success && existingEmployee.Results && existingEmployee.Results.length > 0) {
|
|
47
|
+
return {
|
|
48
|
+
Success: false,
|
|
49
|
+
ResultCode: 'EMAIL_EXISTS',
|
|
50
|
+
Message: `Email address '${email}' already exists for another employee`
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
// Validate company exists
|
|
54
|
+
const companyCheck = await rv.RunView({
|
|
55
|
+
EntityName: 'Companies',
|
|
56
|
+
ExtraFilter: `ID='${companyID}'`,
|
|
57
|
+
ResultType: 'simple'
|
|
58
|
+
}, params.ContextUser);
|
|
59
|
+
if (!companyCheck.Success || !companyCheck.Results || companyCheck.Results.length === 0) {
|
|
60
|
+
return {
|
|
61
|
+
Success: false,
|
|
62
|
+
ResultCode: 'INVALID_COMPANY',
|
|
63
|
+
Message: `Company ID '${companyID}' does not exist`
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
// Validate supervisor if provided
|
|
67
|
+
if (supervisorID) {
|
|
68
|
+
const supervisorCheck = await rv.RunView({
|
|
69
|
+
EntityName: 'Employees',
|
|
70
|
+
ExtraFilter: `ID='${supervisorID}'`,
|
|
71
|
+
ResultType: 'simple'
|
|
72
|
+
}, params.ContextUser);
|
|
73
|
+
if (!supervisorCheck.Success || !supervisorCheck.Results || supervisorCheck.Results.length === 0) {
|
|
74
|
+
return {
|
|
75
|
+
Success: false,
|
|
76
|
+
ResultCode: 'INVALID_SUPERVISOR',
|
|
77
|
+
Message: `Supervisor ID '${supervisorID}' does not exist`
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
// Prepare fields for base CreateRecordAction
|
|
82
|
+
const fields = {
|
|
83
|
+
FirstName: firstName,
|
|
84
|
+
LastName: lastName,
|
|
85
|
+
Email: email,
|
|
86
|
+
CompanyID: companyID,
|
|
87
|
+
Active: active
|
|
88
|
+
};
|
|
89
|
+
if (title)
|
|
90
|
+
fields.Title = title;
|
|
91
|
+
if (phone)
|
|
92
|
+
fields.Phone = phone;
|
|
93
|
+
if (supervisorID)
|
|
94
|
+
fields.SupervisorID = supervisorID;
|
|
95
|
+
// Transform parameters to match CreateRecordAction format
|
|
96
|
+
const createParams = {
|
|
97
|
+
...params,
|
|
98
|
+
Params: [
|
|
99
|
+
{ Name: 'EntityName', Value: 'Employees', Type: 'Input' },
|
|
100
|
+
{ Name: 'Fields', Value: fields, Type: 'Input' }
|
|
101
|
+
]
|
|
102
|
+
};
|
|
103
|
+
// Call parent CreateRecordAction
|
|
104
|
+
const result = await super.InternalRunAction(createParams);
|
|
105
|
+
if (result.Success) {
|
|
106
|
+
// Extract the created employee ID
|
|
107
|
+
const primaryKey = result.Params?.find(p => p.Name === 'PrimaryKey')?.Value;
|
|
108
|
+
if (primaryKey) {
|
|
109
|
+
params.Params.push({
|
|
110
|
+
Name: 'EmployeeID',
|
|
111
|
+
Value: primaryKey.ID,
|
|
112
|
+
Type: 'Output'
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
return {
|
|
116
|
+
...result,
|
|
117
|
+
Params: params.Params
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
return result;
|
|
121
|
+
}
|
|
122
|
+
catch (e) {
|
|
123
|
+
return {
|
|
124
|
+
Success: false,
|
|
125
|
+
ResultCode: 'FAILED',
|
|
126
|
+
Message: `Error creating employee: ${e.message}`
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
};
|
|
131
|
+
exports.CreateEmployeeAction = CreateEmployeeAction;
|
|
132
|
+
exports.CreateEmployeeAction = CreateEmployeeAction = __decorate([
|
|
133
|
+
(0, global_1.RegisterClass)(actions_1.BaseAction, "CreateEmployeeAction")
|
|
134
|
+
], CreateEmployeeAction);
|
|
135
|
+
function LoadCreateEmployeeAction() {
|
|
136
|
+
// Prevent tree shaking
|
|
137
|
+
}
|
|
138
|
+
exports.LoadCreateEmployeeAction = LoadCreateEmployeeAction;
|
|
139
|
+
//# sourceMappingURL=create-employee.action.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-employee.action.js","sourceRoot":"","sources":["../../../src/custom/user-management/create-employee.action.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { ActionResultSimple, RunActionParams } from "@memberjunction/actions-base";
|
|
2
|
+
import { CreateRecordAction } from "../crud/create-record.action";
|
|
3
|
+
/**
|
|
4
|
+
* Creates a new user in the MemberJunction system with validation and optional employee linking.
|
|
5
|
+
* This action extends CreateRecordAction to leverage existing record creation functionality
|
|
6
|
+
* while adding user-specific validation and business logic.
|
|
7
|
+
*/
|
|
8
|
+
export declare class CreateUserAction extends CreateRecordAction {
|
|
9
|
+
InternalRunAction(params: RunActionParams): Promise<ActionResultSimple>;
|
|
10
|
+
}
|
|
11
|
+
export declare function LoadCreateUserAction(): void;
|
|
12
|
+
//# sourceMappingURL=create-user.action.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-user.action.d.ts","sourceRoot":"","sources":["../../../src/custom/user-management/create-user.action.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAEnF,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAKlE;;;;GAIG;AACH,qBACa,gBAAiB,SAAQ,kBAAkB;IAC9C,iBAAiB,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,kBAAkB,CAAC;CAiHhF;AAED,wBAAgB,oBAAoB,SAEnC"}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.LoadCreateUserAction = exports.CreateUserAction = void 0;
|
|
10
|
+
const global_1 = require("@memberjunction/global");
|
|
11
|
+
const create_record_action_1 = require("../crud/create-record.action");
|
|
12
|
+
const actions_1 = require("@memberjunction/actions");
|
|
13
|
+
const core_1 = require("@memberjunction/core");
|
|
14
|
+
const sqlserver_dataprovider_1 = require("@memberjunction/sqlserver-dataprovider");
|
|
15
|
+
/**
|
|
16
|
+
* Creates a new user in the MemberJunction system with validation and optional employee linking.
|
|
17
|
+
* This action extends CreateRecordAction to leverage existing record creation functionality
|
|
18
|
+
* while adding user-specific validation and business logic.
|
|
19
|
+
*/
|
|
20
|
+
let CreateUserAction = class CreateUserAction extends create_record_action_1.CreateRecordAction {
|
|
21
|
+
async InternalRunAction(params) {
|
|
22
|
+
try {
|
|
23
|
+
// Extract user-specific parameters
|
|
24
|
+
const email = params.Params.find(p => p.Name === 'Email')?.Value;
|
|
25
|
+
const firstName = params.Params.find(p => p.Name === 'FirstName')?.Value;
|
|
26
|
+
const lastName = params.Params.find(p => p.Name === 'LastName')?.Value;
|
|
27
|
+
const title = params.Params.find(p => p.Name === 'Title')?.Value;
|
|
28
|
+
const type = params.Params.find(p => p.Name === 'Type')?.Value || 'User';
|
|
29
|
+
const isActive = params.Params.find(p => p.Name === 'IsActive')?.Value !== false;
|
|
30
|
+
const employeeID = params.Params.find(p => p.Name === 'EmployeeID')?.Value;
|
|
31
|
+
// Validate required fields
|
|
32
|
+
if (!email || !firstName || !lastName) {
|
|
33
|
+
return {
|
|
34
|
+
Success: false,
|
|
35
|
+
ResultCode: 'VALIDATION_ERROR',
|
|
36
|
+
Message: 'Email, FirstName, and LastName are required'
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
// Check if email already exists using UserCache
|
|
40
|
+
const existingUser = sqlserver_dataprovider_1.UserCache.Users?.find(u => u.Email?.toLowerCase() === email.toLowerCase());
|
|
41
|
+
if (existingUser) {
|
|
42
|
+
return {
|
|
43
|
+
Success: false,
|
|
44
|
+
ResultCode: 'EMAIL_EXISTS',
|
|
45
|
+
Message: `Email address '${email}' already exists in the system`
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
// Validate employee ID if provided
|
|
49
|
+
if (employeeID) {
|
|
50
|
+
const rv = new core_1.RunView();
|
|
51
|
+
const employeeCheck = await rv.RunView({
|
|
52
|
+
EntityName: 'Employees',
|
|
53
|
+
ExtraFilter: `ID='${employeeID}'`,
|
|
54
|
+
ResultType: 'simple'
|
|
55
|
+
}, params.ContextUser);
|
|
56
|
+
if (!employeeCheck.Success || !employeeCheck.Results || employeeCheck.Results.length === 0) {
|
|
57
|
+
return {
|
|
58
|
+
Success: false,
|
|
59
|
+
ResultCode: 'INVALID_EMPLOYEE',
|
|
60
|
+
Message: `Employee ID '${employeeID}' does not exist`
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
// Prepare fields for base CreateRecordAction
|
|
65
|
+
const fields = {
|
|
66
|
+
FirstName: firstName,
|
|
67
|
+
LastName: lastName,
|
|
68
|
+
Email: email,
|
|
69
|
+
Name: `${firstName} ${lastName}`,
|
|
70
|
+
Type: type,
|
|
71
|
+
IsActive: isActive
|
|
72
|
+
};
|
|
73
|
+
if (title)
|
|
74
|
+
fields.Title = title;
|
|
75
|
+
if (employeeID) {
|
|
76
|
+
fields.EmployeeID = employeeID;
|
|
77
|
+
fields.LinkedRecordType = 'Employee';
|
|
78
|
+
fields.LinkedEntityID = '@lookup:Entities.Name=Employees';
|
|
79
|
+
fields.LinkedEntityRecordID = employeeID;
|
|
80
|
+
}
|
|
81
|
+
// Transform parameters to match CreateRecordAction format
|
|
82
|
+
const createParams = {
|
|
83
|
+
...params,
|
|
84
|
+
Params: [
|
|
85
|
+
{ Name: 'EntityName', Value: 'Users', Type: 'Input' },
|
|
86
|
+
{ Name: 'Fields', Value: fields, Type: 'Input' }
|
|
87
|
+
]
|
|
88
|
+
};
|
|
89
|
+
// Call parent CreateRecordAction
|
|
90
|
+
const result = await super.InternalRunAction(createParams);
|
|
91
|
+
if (result.Success) {
|
|
92
|
+
// Extract the created user ID and add user-specific output parameters
|
|
93
|
+
const primaryKey = result.Params?.find(p => p.Name === 'PrimaryKey')?.Value;
|
|
94
|
+
if (primaryKey) {
|
|
95
|
+
params.Params.push({
|
|
96
|
+
Name: 'UserID',
|
|
97
|
+
Value: primaryKey.ID,
|
|
98
|
+
Type: 'Output'
|
|
99
|
+
});
|
|
100
|
+
params.Params.push({
|
|
101
|
+
Name: 'Name',
|
|
102
|
+
Value: fields.Name,
|
|
103
|
+
Type: 'Output'
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
return {
|
|
107
|
+
...result,
|
|
108
|
+
Params: params.Params
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
return result;
|
|
112
|
+
}
|
|
113
|
+
catch (e) {
|
|
114
|
+
return {
|
|
115
|
+
Success: false,
|
|
116
|
+
ResultCode: 'FAILED',
|
|
117
|
+
Message: `Error creating user: ${e.message}`
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
};
|
|
122
|
+
exports.CreateUserAction = CreateUserAction;
|
|
123
|
+
exports.CreateUserAction = CreateUserAction = __decorate([
|
|
124
|
+
(0, global_1.RegisterClass)(actions_1.BaseAction, "CreateUserAction")
|
|
125
|
+
], CreateUserAction);
|
|
126
|
+
function LoadCreateUserAction() {
|
|
127
|
+
// Prevent tree shaking
|
|
128
|
+
}
|
|
129
|
+
exports.LoadCreateUserAction = LoadCreateUserAction;
|
|
130
|
+
//# sourceMappingURL=create-user.action.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-user.action.js","sourceRoot":"","sources":["../../../src/custom/user-management/create-user.action.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { ActionResultSimple, RunActionParams } from "@memberjunction/actions-base";
|
|
2
|
+
import { BaseAction } from '@memberjunction/actions';
|
|
3
|
+
/**
|
|
4
|
+
* Validates that an email address is not already in use by another user in the system.
|
|
5
|
+
* Returns information about any existing user with the same email.
|
|
6
|
+
*/
|
|
7
|
+
export declare class ValidateEmailUniqueAction extends BaseAction {
|
|
8
|
+
InternalRunAction(params: RunActionParams): Promise<ActionResultSimple>;
|
|
9
|
+
}
|
|
10
|
+
export declare function LoadValidateEmailUniqueAction(): void;
|
|
11
|
+
//# sourceMappingURL=validate-email-unique.action.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate-email-unique.action.d.ts","sourceRoot":"","sources":["../../../src/custom/user-management/validate-email-unique.action.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAEnF,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAGrD;;;GAGG;AACH,qBACa,yBAA0B,SAAQ,UAAU;IAC/C,iBAAiB,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,kBAAkB,CAAC;CAiFhF;AAED,wBAAgB,6BAA6B,SAE5C"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.LoadValidateEmailUniqueAction = exports.ValidateEmailUniqueAction = void 0;
|
|
10
|
+
const global_1 = require("@memberjunction/global");
|
|
11
|
+
const actions_1 = require("@memberjunction/actions");
|
|
12
|
+
const sqlserver_dataprovider_1 = require("@memberjunction/sqlserver-dataprovider");
|
|
13
|
+
/**
|
|
14
|
+
* Validates that an email address is not already in use by another user in the system.
|
|
15
|
+
* Returns information about any existing user with the same email.
|
|
16
|
+
*/
|
|
17
|
+
let ValidateEmailUniqueAction = class ValidateEmailUniqueAction extends actions_1.BaseAction {
|
|
18
|
+
async InternalRunAction(params) {
|
|
19
|
+
console.log('VALIDATE EMAIL UNIQUE ACTION - InternalRunAction called with params:', {
|
|
20
|
+
paramCount: params.Params.length,
|
|
21
|
+
params: params.Params.map(p => ({ Name: p.Name, Value: p.Value, Type: p.Type })),
|
|
22
|
+
contextUser: params.ContextUser?.Email
|
|
23
|
+
});
|
|
24
|
+
try {
|
|
25
|
+
// Extract email parameter
|
|
26
|
+
const email = params.Params.find(p => p.Name === 'Email')?.Value;
|
|
27
|
+
if (!email) {
|
|
28
|
+
return {
|
|
29
|
+
Success: false,
|
|
30
|
+
ResultCode: 'VALIDATION_ERROR',
|
|
31
|
+
Message: 'Email parameter is required'
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
// Basic email format validation
|
|
35
|
+
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
|
36
|
+
if (!emailRegex.test(email)) {
|
|
37
|
+
return {
|
|
38
|
+
Success: false,
|
|
39
|
+
ResultCode: 'INVALID_EMAIL_FORMAT',
|
|
40
|
+
Message: 'Invalid email address format'
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
// Check if email exists in UserCache
|
|
44
|
+
const existingUser = sqlserver_dataprovider_1.UserCache.Users?.find(u => u.Email?.toLowerCase() === email.toLowerCase());
|
|
45
|
+
let isUnique = true;
|
|
46
|
+
let existingUserID = null;
|
|
47
|
+
let existingUserName = null;
|
|
48
|
+
if (existingUser) {
|
|
49
|
+
isUnique = false;
|
|
50
|
+
existingUserID = existingUser.ID;
|
|
51
|
+
existingUserName = existingUser.Name;
|
|
52
|
+
}
|
|
53
|
+
// Add output parameters
|
|
54
|
+
params.Params.push({
|
|
55
|
+
Name: 'IsUnique',
|
|
56
|
+
Value: isUnique,
|
|
57
|
+
Type: 'Output'
|
|
58
|
+
});
|
|
59
|
+
if (!isUnique && existingUserID) {
|
|
60
|
+
params.Params.push({
|
|
61
|
+
Name: 'ExistingUserID',
|
|
62
|
+
Value: existingUserID,
|
|
63
|
+
Type: 'Output'
|
|
64
|
+
});
|
|
65
|
+
params.Params.push({
|
|
66
|
+
Name: 'ExistingUserName',
|
|
67
|
+
Value: existingUserName,
|
|
68
|
+
Type: 'Output'
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
return {
|
|
72
|
+
Success: true,
|
|
73
|
+
ResultCode: 'SUCCESS',
|
|
74
|
+
Message: isUnique
|
|
75
|
+
? `Email '${email}' is available`
|
|
76
|
+
: `Email '${email}' is already in use by ${existingUserName}`,
|
|
77
|
+
Params: params.Params
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
catch (e) {
|
|
81
|
+
return {
|
|
82
|
+
Success: false,
|
|
83
|
+
ResultCode: 'FAILED',
|
|
84
|
+
Message: `Error validating email: ${e.message}`
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
};
|
|
89
|
+
exports.ValidateEmailUniqueAction = ValidateEmailUniqueAction;
|
|
90
|
+
exports.ValidateEmailUniqueAction = ValidateEmailUniqueAction = __decorate([
|
|
91
|
+
(0, global_1.RegisterClass)(actions_1.BaseAction, "ValidateEmailUniqueAction")
|
|
92
|
+
], ValidateEmailUniqueAction);
|
|
93
|
+
function LoadValidateEmailUniqueAction() {
|
|
94
|
+
// Prevent tree shaking
|
|
95
|
+
}
|
|
96
|
+
exports.LoadValidateEmailUniqueAction = LoadValidateEmailUniqueAction;
|
|
97
|
+
//# sourceMappingURL=validate-email-unique.action.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate-email-unique.action.js","sourceRoot":"","sources":["../../../src/custom/user-management/validate-email-unique.action.ts"],"names":[],"mappings":";;;;;;;;;AACA,mDAAuD;AACvD,qDAAqD;AACrD,mFAAmE;AAEnE;;;GAGG;AAEI,IAAM,yBAAyB,GAA/B,MAAM,yBAA0B,SAAQ,oBAAU;IACrD,KAAK,CAAC,iBAAiB,CAAC,MAAuB;QAC3C,OAAO,CAAC,GAAG,CAAC,sEAAsE,EAAE;YAChF,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM;YAChC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YAChF,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,KAAK;SACzC,CAAC,CAAC;QAEH,IAAI,CAAC;YACD,0BAA0B;YAC1B,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,EAAE,KAAe,CAAC;YAE3E,IAAI,CAAC,KAAK,EAAE,CAAC;gBACT,OAAO;oBACH,OAAO,EAAE,KAAK;oBACd,UAAU,EAAE,kBAAkB;oBAC9B,OAAO,EAAE,6BAA6B;iBACzC,CAAC;YACN,CAAC;YAED,gCAAgC;YAChC,MAAM,UAAU,GAAG,4BAA4B,CAAC;YAChD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC1B,OAAO;oBACH,OAAO,EAAE,KAAK;oBACd,UAAU,EAAE,sBAAsB;oBAClC,OAAO,EAAE,8BAA8B;iBAC1C,CAAC;YACN,CAAC;YAED,qCAAqC;YACrC,MAAM,YAAY,GAAG,kCAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAC3C,CAAC,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,KAAK,CAAC,WAAW,EAAE,CACjD,CAAC;YAEF,IAAI,QAAQ,GAAG,IAAI,CAAC;YACpB,IAAI,cAAc,GAAkB,IAAI,CAAC;YACzC,IAAI,gBAAgB,GAAkB,IAAI,CAAC;YAE3C,IAAI,YAAY,EAAE,CAAC;gBACf,QAAQ,GAAG,KAAK,CAAC;gBACjB,cAAc,GAAG,YAAY,CAAC,EAAE,CAAC;gBACjC,gBAAgB,GAAG,YAAY,CAAC,IAAI,CAAC;YACzC,CAAC;YAED,wBAAwB;YACxB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;gBACf,IAAI,EAAE,UAAU;gBAChB,KAAK,EAAE,QAAQ;gBACf,IAAI,EAAE,QAAQ;aACjB,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,IAAI,cAAc,EAAE,CAAC;gBAC9B,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;oBACf,IAAI,EAAE,gBAAgB;oBACtB,KAAK,EAAE,cAAc;oBACrB,IAAI,EAAE,QAAQ;iBACjB,CAAC,CAAC;gBACH,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;oBACf,IAAI,EAAE,kBAAkB;oBACxB,KAAK,EAAE,gBAAgB;oBACvB,IAAI,EAAE,QAAQ;iBACjB,CAAC,CAAC;YACP,CAAC;YAED,OAAO;gBACH,OAAO,EAAE,IAAI;gBACb,UAAU,EAAE,SAAS;gBACrB,OAAO,EAAE,QAAQ;oBACb,CAAC,CAAC,UAAU,KAAK,gBAAgB;oBACjC,CAAC,CAAC,UAAU,KAAK,0BAA0B,gBAAgB,EAAE;gBACjE,MAAM,EAAE,MAAM,CAAC,MAAM;aACxB,CAAC;QAEN,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACT,OAAO;gBACH,OAAO,EAAE,KAAK;gBACd,UAAU,EAAE,QAAQ;gBACpB,OAAO,EAAE,2BAA2B,CAAC,CAAC,OAAO,EAAE;aAClD,CAAC;QACN,CAAC;IACL,CAAC;CACJ,CAAA;AAlFY,8DAAyB;oCAAzB,yBAAyB;IADrC,IAAA,sBAAa,EAAC,oBAAU,EAAE,2BAA2B,CAAC;GAC1C,yBAAyB,CAkFrC;AAED,SAAgB,6BAA6B;IACzC,uBAAuB;AAC3B,CAAC;AAFD,sEAEC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -43,5 +43,10 @@ export * from './custom/workflow/parallel-execute.action';
|
|
|
43
43
|
export * from './custom/workflow/retry.action';
|
|
44
44
|
export * from './custom/workflow/delay.action';
|
|
45
45
|
export * from './custom/ai/execute-ai-prompt.action';
|
|
46
|
+
export * from './custom/user-management/check-user-permission.action';
|
|
47
|
+
export * from './custom/user-management/create-user.action';
|
|
48
|
+
export * from './custom/user-management/create-employee.action';
|
|
49
|
+
export * from './custom/user-management/assign-user-roles.action';
|
|
50
|
+
export * from './custom/user-management/validate-email-unique.action';
|
|
46
51
|
export declare function LoadAllCoreActions(): void;
|
|
47
52
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,+BAA+B,CAAC;AAG9C,cAAc,mDAAmD,CAAC;AAClE,cAAc,6CAA6C,CAAC;AAC5D,cAAc,6CAA6C,CAAC;AAG5D,cAAc,oCAAoC,CAAC;AACnD,cAAc,iCAAiC,CAAC;AAChD,cAAc,oCAAoC,CAAC;AACnD,cAAc,oCAAoC,CAAC;AAGnD,cAAc,kCAAkC,CAAC;AACjD,cAAc,sCAAsC,CAAC;AACrD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,sCAAsC,CAAC;AACrD,cAAc,oCAAoC,CAAC;AACnD,cAAc,qCAAqC,CAAC;AAGpD,cAAc,4CAA4C,CAAC;AAC3D,cAAc,oDAAoD,CAAC;AACnE,cAAc,0CAA0C,CAAC;AACzD,cAAc,8CAA8C,CAAC;AAC7D,cAAc,qDAAqD,CAAC;AACpE,cAAc,mCAAmC,CAAC;AAGlD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,sCAAsC,CAAC;AACrD,cAAc,wCAAwC,CAAC;AACvD,cAAc,4CAA4C,CAAC;AAG3D,cAAc,iCAAiC,CAAC;AAChD,cAAc,qCAAqC,CAAC;AACpD,cAAc,iCAAiC,CAAC;AAChD,cAAc,qCAAqC,CAAC;AACpD,cAAc,kCAAkC,CAAC;AAGjD,cAAc,qCAAqC,CAAC;AACpD,cAAc,qCAAqC,CAAC;AACpD,cAAc,oCAAoC,CAAC;AACnD,cAAc,oCAAoC,CAAC;AACnD,cAAc,qCAAqC,CAAC;AAGpD,cAAc,0CAA0C,CAAC;AACzD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,wCAAwC,CAAC;AACvD,cAAc,8CAA8C,CAAC;AAG7D,cAAc,4CAA4C,CAAC;AAG3D,cAAc,sCAAsC,CAAC;AACrD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,2CAA2C,CAAC;AAC1D,cAAc,gCAAgC,CAAC;AAC/C,cAAc,gCAAgC,CAAC;AAG/C,cAAc,sCAAsC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,+BAA+B,CAAC;AAG9C,cAAc,mDAAmD,CAAC;AAClE,cAAc,6CAA6C,CAAC;AAC5D,cAAc,6CAA6C,CAAC;AAG5D,cAAc,oCAAoC,CAAC;AACnD,cAAc,iCAAiC,CAAC;AAChD,cAAc,oCAAoC,CAAC;AACnD,cAAc,oCAAoC,CAAC;AAGnD,cAAc,kCAAkC,CAAC;AACjD,cAAc,sCAAsC,CAAC;AACrD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,sCAAsC,CAAC;AACrD,cAAc,oCAAoC,CAAC;AACnD,cAAc,qCAAqC,CAAC;AAGpD,cAAc,4CAA4C,CAAC;AAC3D,cAAc,oDAAoD,CAAC;AACnE,cAAc,0CAA0C,CAAC;AACzD,cAAc,8CAA8C,CAAC;AAC7D,cAAc,qDAAqD,CAAC;AACpE,cAAc,mCAAmC,CAAC;AAGlD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,sCAAsC,CAAC;AACrD,cAAc,wCAAwC,CAAC;AACvD,cAAc,4CAA4C,CAAC;AAG3D,cAAc,iCAAiC,CAAC;AAChD,cAAc,qCAAqC,CAAC;AACpD,cAAc,iCAAiC,CAAC;AAChD,cAAc,qCAAqC,CAAC;AACpD,cAAc,kCAAkC,CAAC;AAGjD,cAAc,qCAAqC,CAAC;AACpD,cAAc,qCAAqC,CAAC;AACpD,cAAc,oCAAoC,CAAC;AACnD,cAAc,oCAAoC,CAAC;AACnD,cAAc,qCAAqC,CAAC;AAGpD,cAAc,0CAA0C,CAAC;AACzD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,wCAAwC,CAAC;AACvD,cAAc,8CAA8C,CAAC;AAG7D,cAAc,4CAA4C,CAAC;AAG3D,cAAc,sCAAsC,CAAC;AACrD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,2CAA2C,CAAC;AAC1D,cAAc,gCAAgC,CAAC;AAC/C,cAAc,gCAAgC,CAAC;AAG/C,cAAc,sCAAsC,CAAC;AAGrD,cAAc,uDAAuD,CAAC;AACtE,cAAc,6CAA6C,CAAC;AAC5D,cAAc,iDAAiD,CAAC;AAChE,cAAc,mDAAmD,CAAC;AAClE,cAAc,uDAAuD,CAAC;AAuDtE,wBAAgB,kBAAkB,SAqDjC"}
|
package/dist/index.js
CHANGED
|
@@ -71,6 +71,12 @@ __exportStar(require("./custom/workflow/retry.action"), exports);
|
|
|
71
71
|
__exportStar(require("./custom/workflow/delay.action"), exports);
|
|
72
72
|
// AI Actions
|
|
73
73
|
__exportStar(require("./custom/ai/execute-ai-prompt.action"), exports);
|
|
74
|
+
// User Management Actions
|
|
75
|
+
__exportStar(require("./custom/user-management/check-user-permission.action"), exports);
|
|
76
|
+
__exportStar(require("./custom/user-management/create-user.action"), exports);
|
|
77
|
+
__exportStar(require("./custom/user-management/create-employee.action"), exports);
|
|
78
|
+
__exportStar(require("./custom/user-management/assign-user-roles.action"), exports);
|
|
79
|
+
__exportStar(require("./custom/user-management/validate-email-unique.action"), exports);
|
|
74
80
|
// Import Load functions to prevent tree shaking of @RegisterClass decorators
|
|
75
81
|
const send_single_message_action_1 = require("./custom/communication/send-single-message.action");
|
|
76
82
|
const slack_webhook_action_1 = require("./custom/communication/slack-webhook.action");
|
|
@@ -116,6 +122,11 @@ const parallel_execute_action_1 = require("./custom/workflow/parallel-execute.ac
|
|
|
116
122
|
const retry_action_1 = require("./custom/workflow/retry.action");
|
|
117
123
|
const delay_action_1 = require("./custom/workflow/delay.action");
|
|
118
124
|
const execute_ai_prompt_action_1 = require("./custom/ai/execute-ai-prompt.action");
|
|
125
|
+
const check_user_permission_action_1 = require("./custom/user-management/check-user-permission.action");
|
|
126
|
+
const create_user_action_1 = require("./custom/user-management/create-user.action");
|
|
127
|
+
const create_employee_action_1 = require("./custom/user-management/create-employee.action");
|
|
128
|
+
const assign_user_roles_action_1 = require("./custom/user-management/assign-user-roles.action");
|
|
129
|
+
const validate_email_unique_action_1 = require("./custom/user-management/validate-email-unique.action");
|
|
119
130
|
const action_subclasses_1 = require("./generated/action_subclasses");
|
|
120
131
|
const core_entities_server_1 = require("@memberjunction/core-entities-server");
|
|
121
132
|
function LoadAllCoreActions() {
|
|
@@ -166,6 +177,11 @@ function LoadAllCoreActions() {
|
|
|
166
177
|
(0, retry_action_1.LoadRetryAction)();
|
|
167
178
|
(0, delay_action_1.LoadDelayAction)();
|
|
168
179
|
(0, execute_ai_prompt_action_1.LoadExecuteAIPromptAction)();
|
|
180
|
+
(0, check_user_permission_action_1.LoadCheckUserPermissionAction)();
|
|
181
|
+
(0, create_user_action_1.LoadCreateUserAction)();
|
|
182
|
+
(0, create_employee_action_1.LoadCreateEmployeeAction)();
|
|
183
|
+
(0, assign_user_roles_action_1.LoadAssignUserRolesAction)();
|
|
184
|
+
(0, validate_email_unique_action_1.LoadValidateEmailUniqueAction)();
|
|
169
185
|
}
|
|
170
186
|
exports.LoadAllCoreActions = LoadAllCoreActions;
|
|
171
187
|
// ensure that the core entities server sub-classes are loaded and not tree-shaken out
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@memberjunction/core-actions",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.82.0",
|
|
4
4
|
"description": "Library of generated and custom actions for the core MemberJunction framework. This library is maintained by MemberJunction and includes actions for use within the framework itself.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -19,16 +19,16 @@
|
|
|
19
19
|
"typescript": "^5.4.5"
|
|
20
20
|
},
|
|
21
21
|
"dependencies": {
|
|
22
|
-
"@memberjunction/global": "2.
|
|
23
|
-
"@memberjunction/core": "2.
|
|
24
|
-
"@memberjunction/core-entities": "2.
|
|
25
|
-
"@memberjunction/core-entities-server": "2.
|
|
26
|
-
"@memberjunction/ai-core-plus": "2.
|
|
27
|
-
"@memberjunction/actions": "2.
|
|
28
|
-
"@memberjunction/communication-engine": "2.
|
|
29
|
-
"@memberjunction/external-change-detection": "2.
|
|
30
|
-
"@memberjunction/ai-vector-sync": "2.
|
|
31
|
-
"@memberjunction/content-autotagging": "2.
|
|
22
|
+
"@memberjunction/global": "2.82.0",
|
|
23
|
+
"@memberjunction/core": "2.82.0",
|
|
24
|
+
"@memberjunction/core-entities": "2.82.0",
|
|
25
|
+
"@memberjunction/core-entities-server": "2.82.0",
|
|
26
|
+
"@memberjunction/ai-core-plus": "2.82.0",
|
|
27
|
+
"@memberjunction/actions": "2.82.0",
|
|
28
|
+
"@memberjunction/communication-engine": "2.82.0",
|
|
29
|
+
"@memberjunction/external-change-detection": "2.82.0",
|
|
30
|
+
"@memberjunction/ai-vector-sync": "2.82.0",
|
|
31
|
+
"@memberjunction/content-autotagging": "2.82.0",
|
|
32
32
|
"axios": "^1.6.8",
|
|
33
33
|
"rxjs": "^7.8.1",
|
|
34
34
|
"nunjucks": "^3.2.4",
|