This commit is contained in:
2
.vscode/launch.json
vendored
2
.vscode/launch.json
vendored
@@ -53,7 +53,7 @@
|
||||
"AYANOVA_FOLDER_USER_FILES": "c:\\temp\\RavenTestData\\userfiles",
|
||||
"AYANOVA_FOLDER_BACKUP_FILES": "c:\\temp\\RavenTestData\\backupfiles",
|
||||
"AYANOVA_FOLDER_TEMPORARY_SERVER_FILES": "c:\\temp\\RavenTestData\\tempfiles",
|
||||
"AYANOVA_SERVER_TEST_MODE": "true",
|
||||
"AYANOVA_SERVER_TEST_MODE": "false",
|
||||
"AYANOVA_SERVER_TEST_MODE_SEEDLEVEL": "large",
|
||||
"AYANOVA_SERVER_TEST_MODE_TZ_OFFSET": "-7",
|
||||
"AYANOVA_BACKUP_PG_DUMP_PATH": "C:\\data\\code\\postgres_13\\bin\\"
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
using EnumsNET;
|
||||
using System.Collections.Generic;
|
||||
using AyaNova.Biz;
|
||||
|
||||
|
||||
17
server/AyaNova/ControllerHelpers/UserTypeFromContext.cs
Normal file
17
server/AyaNova/ControllerHelpers/UserTypeFromContext.cs
Normal file
@@ -0,0 +1,17 @@
|
||||
using System.Collections.Generic;
|
||||
using AyaNova.Biz;
|
||||
|
||||
namespace AyaNova.Api.ControllerHelpers
|
||||
{
|
||||
|
||||
|
||||
internal static class UserTypeFromContext
|
||||
{
|
||||
internal static UserType Type(IDictionary<object, object> HttpContextItems)
|
||||
{
|
||||
return (UserType)HttpContextItems["AY_USER_TYPE"];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}//eons
|
||||
@@ -462,11 +462,12 @@ namespace AyaNova
|
||||
var ct = context.RequestServices.GetService<AyContext>();
|
||||
|
||||
//get the user record
|
||||
var u = await ct.User.AsNoTracking().Where(a => a.Id == userId).Select(m => new { roles = m.Roles, name = m.Name, id = m.Id, translationId = m.UserOptions.TranslationId, currentAuthToken = m.CurrentAuthToken }).FirstAsync();
|
||||
var u = await ct.User.AsNoTracking().Where(a => a.Id == userId).Select(m => new { roles = m.Roles, name = m.Name, m.UserType, id = m.Id, translationId = m.UserOptions.TranslationId, currentAuthToken = m.CurrentAuthToken }).FirstAsync();
|
||||
context.Request.HttpContext.Items["AY_ROLES"] = u.roles;
|
||||
context.Request.HttpContext.Items["AY_USERNAME"] = u.name;
|
||||
context.Request.HttpContext.Items["AY_USER_ID"] = u.id;
|
||||
context.Request.HttpContext.Items["AY_TRANSLATION_ID"] = u.translationId;
|
||||
context.Request.HttpContext.Items["AY_USER_TYPE"] = u.UserType;
|
||||
|
||||
//turned out didn't need this for v8 migrate so far, but keeping in case it turns out to be handy down the road
|
||||
// //Is import mode header set?
|
||||
|
||||
@@ -12,7 +12,11 @@ namespace AyaNova.Biz
|
||||
|
||||
//Returns the biz object class that corresponds to the type presented
|
||||
//Used by SEARCH, REPORTING and objects with JOBS
|
||||
internal static BizObject GetBizObject(AyaType ayaType, AyContext ct, long userId = 1, AuthorizationRoles roles = AuthorizationRoles.All, long translationId = 0)
|
||||
internal static BizObject GetBizObject(AyaType ayaType,
|
||||
AyContext ct,
|
||||
long userId = 1,
|
||||
AuthorizationRoles roles = AuthorizationRoles.All,
|
||||
long translationId = 0)
|
||||
{
|
||||
if (translationId == 0)
|
||||
translationId = ServerBootConfig.AYANOVA_DEFAULT_TRANSLATION_ID;
|
||||
@@ -92,7 +96,7 @@ namespace AyaNova.Biz
|
||||
case AyaType.WorkOrderItemTravel:
|
||||
case AyaType.WorkOrderItemUnit:
|
||||
case AyaType.WorkOrderItemOutsideService:
|
||||
return new WorkOrderBiz(ct, userId, translationId, roles);
|
||||
return new WorkOrderBiz(ct, userId, translationId, roles, UserType.NotService);//default to not service for now arbitrarily on the principle of least access
|
||||
//---
|
||||
case AyaType.WorkOrderTemplate:
|
||||
return new WorkOrderTemplateBiz(ct, userId, translationId, roles);
|
||||
|
||||
@@ -18,7 +18,7 @@ namespace AyaNova.Biz
|
||||
{
|
||||
// //Feature specific roles
|
||||
|
||||
internal WorkOrderBiz(AyContext dbcontext, long currentUserId, long userTranslationId, AuthorizationRoles UserRoles)
|
||||
internal WorkOrderBiz(AyContext dbcontext, long currentUserId, long userTranslationId, AuthorizationRoles UserRoles, UserType currentUserType)
|
||||
{
|
||||
ct = dbcontext;
|
||||
UserId = currentUserId;
|
||||
@@ -30,9 +30,17 @@ namespace AyaNova.Biz
|
||||
internal static WorkOrderBiz GetBiz(AyContext ct, Microsoft.AspNetCore.Http.HttpContext httpContext = null)
|
||||
{
|
||||
if (httpContext != null)
|
||||
return new WorkOrderBiz(ct, UserIdFromContext.Id(httpContext.Items), UserTranslationIdFromContext.Id(httpContext.Items), UserRolesFromContext.Roles(httpContext.Items));
|
||||
return new WorkOrderBiz(ct,
|
||||
UserIdFromContext.Id(httpContext.Items),
|
||||
UserTranslationIdFromContext.Id(httpContext.Items),
|
||||
UserRolesFromContext.Roles(httpContext.Items),
|
||||
UserTypeFromContext.Type(httpContext.Items));
|
||||
else
|
||||
return new WorkOrderBiz(ct, 1, ServerBootConfig.AYANOVA_DEFAULT_TRANSLATION_ID, AuthorizationRoles.BizAdmin);
|
||||
return new WorkOrderBiz(ct,
|
||||
1,
|
||||
ServerBootConfig.AYANOVA_DEFAULT_TRANSLATION_ID,
|
||||
AuthorizationRoles.BizAdmin,
|
||||
UserType.NotService);//picked not service arbitrarily, probably a non-factor
|
||||
}
|
||||
|
||||
|
||||
@@ -3736,7 +3744,7 @@ namespace AyaNova.Biz
|
||||
if (proposedObj.UnitId < 1 || !await ct.Unit.AnyAsync(x => x.Id == proposedObj.UnitId))
|
||||
AddError(ApiErrorCode.VALIDATION_INVALID_VALUE, "UnitId");
|
||||
|
||||
|
||||
|
||||
//Any form customizations to validate?
|
||||
var FormCustomization = await ct.FormCustom.AsNoTracking().SingleOrDefaultAsync(z => z.FormKey == AyaType.WorkOrderItemOutsideService.ToString());
|
||||
if (FormCustomization != null)
|
||||
@@ -4465,7 +4473,7 @@ namespace AyaNova.Biz
|
||||
}
|
||||
}
|
||||
|
||||
if (!await BizObjectExistsInDatabase.ExistsAsync(AyaType.Part, proposedObj.PartId, ct))
|
||||
if (!await BizObjectExistsInDatabase.ExistsAsync(AyaType.Part, proposedObj.PartId, ct))
|
||||
{
|
||||
AddError(ApiErrorCode.NOT_FOUND, "PartId");
|
||||
return;
|
||||
@@ -4973,7 +4981,7 @@ namespace AyaNova.Biz
|
||||
}
|
||||
}
|
||||
|
||||
if (proposedObj.EstimatedQuantity < 0)//negative quantities are not allowed
|
||||
if (proposedObj.EstimatedQuantity < 0)//negative quantities are not allowed
|
||||
AddError(ApiErrorCode.VALIDATION_INVALID_VALUE, "EstimatedQuantity");
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user