diff --git a/devdocs/specs/core-roles.txt b/devdocs/specs/core-roles.txt index 1d884913..3e7d21b6 100644 --- a/devdocs/specs/core-roles.txt +++ b/devdocs/specs/core-roles.txt @@ -240,7 +240,7 @@ View customers can't change them BizAdminLimited | BizAdminFull | DispatchLimited | DispatchFull | InventoryLimited | InventoryFull | AccountingFull | TechLimited | TechFull | SubContractorLimited | - SubContractorFull | ClientLimited | ClientFull | OpsAdminLimited | OpsAdminFull + SubContractorFull | ClientLimited | ClientFull | OpsAdminLimited | OpsAdminFull | SalesFull | SalesLimited # CLIENT UI AREAS AND ROLES THAT CAN SEE THEM (there are other restrictions individually but this is just that they are visible to those users in the main UI) diff --git a/server/AyaNova/Controllers/AyaEnumPickListController.cs b/server/AyaNova/Controllers/AyaEnumPickListController.cs index 3cf269cd..8bab10c4 100644 --- a/server/AyaNova/Controllers/AyaEnumPickListController.cs +++ b/server/AyaNova/Controllers/AyaEnumPickListController.cs @@ -19,7 +19,7 @@ namespace AyaNova.Api.Controllers [ApiVersion("8.0")] [Route("api/v{version:apiVersion}/[controller]")] [Produces("application/json")] - [Authorize] + [Authorize] public class AyaEnumPickListController : ControllerBase { private readonly AyContext ct; @@ -101,7 +101,9 @@ namespace AyaNova.Api.Controllers LocaleKeysToFetch.Add("AuthorizationRoleClientFull"); LocaleKeysToFetch.Add("AuthorizationRoleOpsAdminLimited"); LocaleKeysToFetch.Add("AuthorizationRoleOpsAdminFull"); - LocaleKeysToFetch.Add("AuthorizationRoleAll"); + LocaleKeysToFetch.Add("AuthorizationRoleSalesLimited"); + LocaleKeysToFetch.Add("AuthorizationRoleSalesFull"); + LocaleKeysToFetch.Add("AuthorizationRoleAll"); var LT = LocaleBiz.GetSubsetStatic(LocaleKeysToFetch, LocaleId).Result; ReturnList.Add(new NameIdItem() { Name = LT["AuthorizationRoleNoRole"], Id = (long)AuthorizationRoles.NoRole }); @@ -120,6 +122,8 @@ namespace AyaNova.Api.Controllers ReturnList.Add(new NameIdItem() { Name = LT["AuthorizationRoleClientFull"], Id = (long)AuthorizationRoles.ClientFull }); ReturnList.Add(new NameIdItem() { Name = LT["AuthorizationRoleOpsAdminLimited"], Id = (long)AuthorizationRoles.OpsAdminLimited }); ReturnList.Add(new NameIdItem() { Name = LT["AuthorizationRoleOpsAdminFull"], Id = (long)AuthorizationRoles.OpsAdminFull }); + ReturnList.Add(new NameIdItem() { Name = LT["AuthorizationRoleSalesLimited"], Id = (long)AuthorizationRoles.SalesLimited }); + ReturnList.Add(new NameIdItem() { Name = LT["AuthorizationRoleSalesFull"], Id = (long)AuthorizationRoles.SalesFull }); ReturnList.Add(new NameIdItem() { Name = LT["AuthorizationRoleAll"], Id = (long)AuthorizationRoles.All }); } @@ -152,7 +156,7 @@ namespace AyaNova.Api.Controllers return StatusCode(503, new ApiErrorResponse(ApiErrorCode.API_CLOSED, null, serverState.Reason)); } - List> ret = new List>(); + List> ret = new List>(); ret.Add(new KeyValuePair("usertypes", "AyaNova user account types")); ret.Add(new KeyValuePair("authorizationroles", "AyaNova user account role types")); ret.Add(new KeyValuePair("AyaType", "All AyaNova object types, use the AyaTypeController route to fetch these")); diff --git a/server/AyaNova/resource/de.json b/server/AyaNova/resource/de.json index f1316f7b..f92ee1a5 100644 --- a/server/AyaNova/resource/de.json +++ b/server/AyaNova/resource/de.json @@ -1548,6 +1548,8 @@ "AuthorizationRoleClientFull":"Client-Benutzer - unbeschränkt", "AuthorizationRoleOpsAdminLimited":"Systemvorgänge - beschränkt", "AuthorizationRoleOpsAdminFull":"Systemvorgänge - unbeschränkt", + "AuthorizationRoleSalesLimited":"Verkaufsabteilung - beschränkt", + "AuthorizationRoleSalesFull":"Verkaufsabteilung - unbeschränkt", "AuthorizationRoleAll":"Alle rollen", "Welcome":"Willkommen in AyaNova", "ErrorFieldValueNotInteger": "Der Wert muss eine ganze Zahl sein", diff --git a/server/AyaNova/resource/en.json b/server/AyaNova/resource/en.json index 573224d6..ad0b8519 100644 --- a/server/AyaNova/resource/en.json +++ b/server/AyaNova/resource/en.json @@ -1547,6 +1547,8 @@ "AuthorizationRoleClientFull":"Customer user - full", "AuthorizationRoleOpsAdminLimited":"System operations - limited", "AuthorizationRoleOpsAdminFull":"System operations - full", + "AuthorizationRoleSalesLimited":"Sales - limited", + "AuthorizationRoleSalesFull":"Sales - full", "AuthorizationRoleAll":"All roles", "Welcome":"Welcome to AyaNova", "ErrorFieldValueNotInteger": "Value must be an integer", diff --git a/server/AyaNova/resource/es.json b/server/AyaNova/resource/es.json index b2ea2c4f..61a8f159 100644 --- a/server/AyaNova/resource/es.json +++ b/server/AyaNova/resource/es.json @@ -1548,6 +1548,8 @@ "AuthorizationRoleClientFull":"Usuario cliente - completo", "AuthorizationRoleOpsAdminLimited":"Operaciones del sistema - limitada", "AuthorizationRoleOpsAdminFull":"Operaciones del sistema - completo", + "AuthorizationRoleSalesLimited":"Ventas - limitada", + "AuthorizationRoleSalesFull":"Ventas - completo", "AuthorizationRoleAll":"Todos los roles", "Welcome":"Bienvenido a AyaNova", "ErrorFieldValueNotInteger": "El valor debe ser un entero", diff --git a/server/AyaNova/resource/fr.json b/server/AyaNova/resource/fr.json index 16a5df7d..2242af13 100644 --- a/server/AyaNova/resource/fr.json +++ b/server/AyaNova/resource/fr.json @@ -1547,6 +1547,8 @@ "AuthorizationRoleClientFull": "Client utilisateur - complète", "AuthorizationRoleOpsAdminLimited": "Opérations du système - limited", "AuthorizationRoleOpsAdminFull": "Opérations du système - complète", + "AuthorizationRoleSalesLimited":"Ventes - limité", + "AuthorizationRoleSalesFull":"Ventes - complète", "AuthorizationRoleAll":"Tous les rôles", "Welcome": "Bienvenue chez AyaNova", "ErrorFieldValueNotInteger": "La valeur doit être un entier", diff --git a/server/AyaNova/util/Seeder.cs b/server/AyaNova/util/Seeder.cs index 7804b766..e523e644 100644 --- a/server/AyaNova/util/Seeder.cs +++ b/server/AyaNova/util/Seeder.cs @@ -165,7 +165,7 @@ namespace AyaNova.Util GenSeedUser(log, 1, AuthorizationRoles.BizAdminFull | AuthorizationRoles.OpsAdminLimited, UserType.NonSchedulable, timeZoneOffset); //One owner who doesn't control anything but views stuff - GenSeedUser(log, 1, AuthorizationRoles.DispatchLimited | AuthorizationRoles.InventoryLimited | AuthorizationRoles.OpsAdminLimited, UserType.NonSchedulable, timeZoneOffset); + GenSeedUser(log, 1, AuthorizationRoles.BizAdminLimited | AuthorizationRoles.DispatchLimited | AuthorizationRoles.InventoryLimited | AuthorizationRoles.OpsAdminLimited | AuthorizationRoles.SalesLimited, UserType.NonSchedulable, timeZoneOffset); //20 techs GenSeedUser(log, 20, AuthorizationRoles.TechFull | AuthorizationRoles.DispatchLimited, UserType.Schedulable, timeZoneOffset); @@ -173,9 +173,12 @@ namespace AyaNova.Util //2 subcontractors GenSeedUser(log, 2, AuthorizationRoles.SubContractorFull, UserType.Subcontractor, timeZoneOffset); - //3 sales / generic office people people + //3 generic office people people GenSeedUser(log, 3, AuthorizationRoles.DispatchLimited | AuthorizationRoles.InventoryLimited, UserType.NonSchedulable, timeZoneOffset); + //2 Full sales people + GenSeedUser(log, 2, AuthorizationRoles.SalesFull, UserType.NonSchedulable, timeZoneOffset); + //1 dispatch manager GenSeedUser(log, 1, AuthorizationRoles.DispatchFull | AuthorizationRoles.InventoryLimited, UserType.NonSchedulable, timeZoneOffset); @@ -214,7 +217,7 @@ namespace AyaNova.Util GenSeedUser(log, 2, AuthorizationRoles.BizAdminFull | AuthorizationRoles.OpsAdminLimited, UserType.NonSchedulable, timeZoneOffset); //owner / upper management who doesn't control anything but views stuff - GenSeedUser(log, 5, AuthorizationRoles.DispatchLimited | AuthorizationRoles.InventoryLimited | AuthorizationRoles.OpsAdminLimited, UserType.NonSchedulable, timeZoneOffset); + GenSeedUser(log, 5, AuthorizationRoles.BizAdminLimited | AuthorizationRoles.DispatchLimited | AuthorizationRoles.InventoryLimited | AuthorizationRoles.OpsAdminLimited, UserType.NonSchedulable, timeZoneOffset); //100 techs GenSeedUser(log, 100, AuthorizationRoles.TechFull | AuthorizationRoles.DispatchLimited, UserType.Schedulable, timeZoneOffset); @@ -228,9 +231,15 @@ namespace AyaNova.Util //10 limited subcontractors GenSeedUser(log, 10, AuthorizationRoles.SubContractorLimited, UserType.Subcontractor, timeZoneOffset); - //30 sales / generic office people people + //30 generic office people people GenSeedUser(log, 30, AuthorizationRoles.DispatchLimited | AuthorizationRoles.InventoryLimited, UserType.NonSchedulable, timeZoneOffset); + //10 Full sales people + GenSeedUser(log, 10, AuthorizationRoles.SalesFull, UserType.NonSchedulable, timeZoneOffset); + + //5 Limited sales people + GenSeedUser(log, 5, AuthorizationRoles.SalesLimited, UserType.NonSchedulable, timeZoneOffset); + //5 dispatch manager GenSeedUser(log, 5, AuthorizationRoles.DispatchFull | AuthorizationRoles.InventoryLimited, UserType.NonSchedulable, timeZoneOffset); @@ -284,7 +293,7 @@ namespace AyaNova.Util GenSeedUser(log, 10, AuthorizationRoles.BizAdminFull | AuthorizationRoles.OpsAdminLimited, UserType.NonSchedulable, timeZoneOffset); //owner / upper management who doesn't control anything but views stuff - GenSeedUser(log, 20, AuthorizationRoles.DispatchLimited | AuthorizationRoles.InventoryLimited | AuthorizationRoles.OpsAdminLimited, UserType.NonSchedulable, timeZoneOffset); + GenSeedUser(log, 20, AuthorizationRoles.BizAdminLimited | AuthorizationRoles.DispatchLimited | AuthorizationRoles.InventoryLimited | AuthorizationRoles.OpsAdminLimited, UserType.NonSchedulable, timeZoneOffset); //regular techs GenSeedUser(log, 500, AuthorizationRoles.TechFull | AuthorizationRoles.DispatchLimited, UserType.Schedulable, timeZoneOffset); @@ -298,9 +307,15 @@ namespace AyaNova.Util //limited subcontractors GenSeedUser(log, 40, AuthorizationRoles.SubContractorLimited, UserType.Subcontractor, timeZoneOffset); - //sales / generic office people people + //generic office people people GenSeedUser(log, 200, AuthorizationRoles.DispatchLimited | AuthorizationRoles.InventoryLimited, UserType.NonSchedulable, timeZoneOffset); + //20 Full sales people + GenSeedUser(log, 20, AuthorizationRoles.SalesFull, UserType.NonSchedulable, timeZoneOffset); + + //10 Limited sales people + GenSeedUser(log, 10, AuthorizationRoles.SalesLimited, UserType.NonSchedulable, timeZoneOffset); + //dispatch manager GenSeedUser(log, 20, AuthorizationRoles.DispatchFull | AuthorizationRoles.InventoryLimited, UserType.NonSchedulable, timeZoneOffset); @@ -368,7 +383,7 @@ namespace AyaNova.Util } - private static string[] TagSet = new[] { "red", "orange", "yellow", "green", "blue", "indigo", "violet", "brown", "black", "white", "silver", "gold", "fuchsia","jade","mauve","purple","quince","xanthic","zebra", "zone-0", "zone-1", "zone-2", "zone-3", "zone-4", "zone-5", "zone-6", "zone-7", "zone-8", "zone-9" }; + private static string[] TagSet = new[] { "red", "orange", "yellow", "green", "blue", "indigo", "violet", "brown", "black", "white", "silver", "gold", "fuchsia", "jade", "mauve", "purple", "quince", "xanthic", "zebra", "zone-0", "zone-1", "zone-2", "zone-3", "zone-4", "zone-5", "zone-6", "zone-7", "zone-8", "zone-9" }; private static List RandomTags(Faker f) { @@ -396,6 +411,8 @@ namespace AyaNova.Util GenSeedUser(log, 1, AuthorizationRoles.AccountingFull, UserType.NonSchedulable, timeZoneOffset, "Accounting", "Accounting"); GenSeedUser(log, 1, AuthorizationRoles.TechLimited, UserType.Schedulable, timeZoneOffset, "TechLimited", "TechLimited"); GenSeedUser(log, 1, AuthorizationRoles.TechFull, UserType.Schedulable, timeZoneOffset, "TechFull", "TechFull"); + GenSeedUser(log, 1, AuthorizationRoles.SalesLimited, UserType.NonSchedulable, timeZoneOffset, "SalesLimited", "SalesLimited"); + GenSeedUser(log, 1, AuthorizationRoles.SalesFull, UserType.NonSchedulable, timeZoneOffset, "SalesFull", "SalesFull"); GenSeedUser(log, 1, AuthorizationRoles.SubContractorLimited, UserType.Subcontractor, timeZoneOffset, "SubContractorLimited", "SubContractorLimited"); GenSeedUser(log, 1, AuthorizationRoles.SubContractorFull, UserType.Subcontractor, timeZoneOffset, "SubContractorFull", "SubContractorFull");