/// <summary> /// Checks if the userRole is at or above the lowestRoleRequirement /// </summary> /// <param name="requsterType"></param> /// <param name="userRole"></param> /// <param name="lowestRoleRequirement"></param> /// <returns></returns> public static bool IsRoleAllowed(RequesterType requsterType, string userRole, string lowestRoleRequirement) { bool isAllowed = false; List <string> comparisonRoles = null; if (lowestRoleRequirement != null) { //Get comparison roles: switch (requsterType) { case RequesterType.PlatformUser: comparisonRoles = Sahara.Core.Settings.Platform.Users.Authorization.Roles.GetRoles(); break; case RequesterType.AccountUser: comparisonRoles = Sahara.Core.Settings.Accounts.Users.Authorization.Roles.GetRoles(); break; default: break; } //Check if the userRole is at or above the lowestRoleRequirement if (comparisonRoles != null) { //Get index of lowestRoleRequirement var lowestIndex = comparisonRoles.IndexOf(lowestRoleRequirement); var comparisonIndex = comparisonRoles.IndexOf(userRole); if (comparisonIndex >= lowestIndex) { isAllowed = true; } } } else { isAllowed = false; } return(isAllowed); }
// Future performance update: have client upload image to intermediary storage, submit location with imag eid for WCF processing (similar to other imageing solutions) public DataAccessResponseType UpdatePlatformUserProfilePhoto(string userId, byte[] imageByteArray, string requesterId, RequesterType requesterType, string sharedClientKey) { // Ensure the clients are certified. if (sharedClientKey != Sahara.Core.Platform.Requests.RequestManager.SharedClientKey) { return(null); } #region Validate Request var requesterName = string.Empty; var requesterEmail = string.Empty; var requestResponseType = RequestManager.ValidateRequest(requesterId, requesterType, out requesterName, out requesterEmail, Sahara.Core.Settings.Platform.Users.Authorization.Roles.SuperAdmin, null); if (!requestResponseType.isApproved) { //Request is not approved, send results: return(new DataAccessResponseType { isSuccess = false, ErrorMessage = requestResponseType.requestMessage }); } #endregion var result = PlatformUserManager.UpdateProfilePhoto(userId, imageByteArray); #region Log Platoform Activity if (result.isSuccess) { try { var logDescription = string.Empty; if (userId == requesterId) { logDescription = requesterName + " has updated their profile photo"; } else { var user = PlatformUserManager.GetUser(userId); logDescription = requesterName + " updated " + user.FullName + "'s profile photo"; } PlatformLogManager.LogActivity( CategoryType.PlatformUser, ActivityType.PlatformUser_Edited, "Photo updated", logDescription, null, null, requesterId, requesterName, requesterEmail ); } catch { } } #endregion return(result); }
public DataAccessResponseType BuyCredits(string accountId, decimal dollarAmount, string requesterId, RequesterType requesterType, string ipAddress, string origin, string sharedClientKey) { // Ensure the clients are certified. if (sharedClientKey != Sahara.Core.Platform.Requests.RequestManager.SharedClientKey) { return(null); } #region Validate Request var requesterName = string.Empty; var requesterEmail = string.Empty; //Only Platform SuperAdmins and Account Admins can buy credits var requestResponseType = RequestManager.ValidateRequest(requesterId, requesterType, out requesterName, out requesterEmail, Sahara.Core.Settings.Platform.Users.Authorization.Roles.SuperAdmin, Sahara.Core.Settings.Accounts.Users.Authorization.Roles.Admin); if (!requestResponseType.isApproved) { //Request is not approved, send results: return(new DataAccessResponseType { isSuccess = false, ErrorMessage = requestResponseType.requestMessage }); } #endregion var result = AccountCreditsManager.BuyCredits(accountId, dollarAmount); #region Log Account Activity if (result.isSuccess) { /*try{ * * * var creditsAmount = Sahara.Core.Common.Methods.Commerce.ConvertDollarAmountToCredits(dollarAmount); * * AccountLogManager.LogActivity( * accountId, * CategoryType.Credits, * ActivityType.Credits_Purchased, * creditsAmount + " credits purchased", * requesterName + " purchased " + creditsAmount + " credits for $" + dollarAmount, * requesterId, * requesterName, * requesterEmail, * ipAddress, * origin); * }catch{}*/ } #endregion return(result); }
/// <summary> /// Injecting batch documents for an account helps us to test partitions, DocDB Fault Tolerance & DocDB batch deletions during deprovisioning /// These docuents are injected as "Images" without any Category, Subcategory or Tag affiliations - so they will not show up on the imaging screen /// </summary> /// <param name="accountId"></param> /// <param name="documentInjectionCount"></param> /// <param name="requesterId"></param> /// <param name="requesterType"></param> /// <returns></returns> public DataAccessResponseType InjectImageDocumentsIntoAccount(string accountId, int imageDocumentInjectionCount, string requesterId, RequesterType requesterType, string sharedClientKey) { // Ensure the clients are certified. if (sharedClientKey != Sahara.Core.Platform.Requests.RequestManager.SharedClientKey) { return(null); } return(null); /* * * //Get ACCOUNT * var account = AccountManager.GetAccount(accountId, true, AccountManager.AccountIdentificationType.AccountID); * #region Validate Request * * var requesterName = string.Empty; * var requesterEmail = string.Empty; * * var requestResponseType = RequestManager.ValidateRequest(requesterId, * requesterType, out requesterName, out requesterEmail, * Sahara.Core.Settings.Platform.Users.Authorization.Roles.SuperAdmin); * * if (!requestResponseType.isApproved) * { * //Request is not approved, send results: * return new DataAccessResponseType { isSuccess = false, ErrorMessage = requestResponseType.requestMessage }; * } * #endregion * #region Validate Plan Capabilities * * //Verify that current document count + the injected document count is below maximum "images" allowed by this plan * //if ((ApplicationImagesManager.GetApplicationImageCount(account) + imageDocumentInjectionCount) > account.PaymentPlan.MaxProducts) //<-- We base our document limit count on images * //{ * //Log Limitation Issues (or send email) so that Platform Admins can immediatly contact Accounts that have hit their limits an upsell themm * //Sahara.Core.Logging.PlatformLogs.Helpers.PlatformLimitationsHelper.LogLimitationAndAlertAdmins("images", account.AccountID.ToString(), account.AccountName); * * //return new DataAccessResponseType { isSuccess = false, ErrorMessage = "Your account plan does not allow for more than " + account.PaymentPlan.MaxProducts + " images, please update your plan to add more." }; * //} * #endregion * * var result = DataInjectionManager.InjectDocuments(accountId, imageDocumentInjectionCount); * #region Log Activity (IGNORED) * * /* * if (result.isSuccess) * { * try * { * * //Object Log --------------------------- * AccountLogManager.LogActivity( * accountId, * CategoryType.ApplicationTests, * ActivityType.ApplicationTests_DocumentInjection, * documentInjectionCount + " test documents injected", * requesterName + " injected " + documentInjectionCount + " test documents", * requesterId, * requesterName, * requesterEmail, * null, * null, * result.SuccessMessage); * } * catch { } * * * }* / * #endregion * #region Invalidate Account Capacity Cache * * AccountCapacityManager.InvalidateAccountCapacitiesCache(accountId); * #endregion * * return result; */ }
public string RegenenerateApiKey(string accountNameKey, string apiKey, string requesterId, RequesterType requesterType, string sharedClientKey) { // Ensure the clients are certified. if (sharedClientKey != Sahara.Core.Platform.Requests.RequestManager.SharedClientKey) { return(null); } //Get ACCOUNT var account = AccountManager.GetAccount(accountNameKey, true, AccountManager.AccountIdentificationType.AccountName); #region Validate Request var requesterName = string.Empty; var requesterEmail = string.Empty; var requestResponseType = RequestManager.ValidateRequest(requesterId, requesterType, out requesterName, out requesterEmail, Sahara.Core.Settings.Platform.Users.Authorization.Roles.Manager, Sahara.Core.Settings.Accounts.Users.Authorization.Roles.Manager); if (!requestResponseType.isApproved) { //Request is not approved, send results: //return new DataAccessResponseType { isSuccess = false, ErrorMessage = requestResponseType.requestMessage }; return(null); } #endregion var newKey = ApiKeysManager.RegenerateApiKey(account, apiKey); #region Log Account Activity if (!string.IsNullOrEmpty(newKey)) { try { //Object Log --------------------------- AccountLogManager.LogActivity( account.AccountID.ToString(), account.StoragePartition, CategoryType.ApiKeys, ActivityType.ApiKeys_KeyGenerated, "API Key '" + apiKey + "' regenerated. New key: '" + newKey + "'", requesterName + " regenerated previous api key to '" + newKey + "'", requesterId, requesterName, requesterEmail); } catch { } } #endregion return(newKey); }
public DataAccessResponseType DeleteImageFormat(string accountNameKey, string imageGroupTypeNameKey, string imageGroupNameKey, string imageFormatNameKey, string requesterId, RequesterType requesterType, string sharedClientKey) { // Ensure the clients are certified. if (sharedClientKey != Sahara.Core.Platform.Requests.RequestManager.SharedClientKey) { return(null); } //Get ACCOUNT var account = AccountManager.GetAccount(accountNameKey, true, AccountManager.AccountIdentificationType.AccountName); #region Validate Request var requesterName = string.Empty; var requesterEmail = string.Empty; var requestResponseType = RequestManager.ValidateRequest(requesterId, requesterType, out requesterName, out requesterEmail, Sahara.Core.Settings.Platform.Users.Authorization.Roles.Manager, Sahara.Core.Settings.Accounts.Users.Authorization.Roles.Manager); if (!requestResponseType.isApproved) { //Request is not approved, send results: return(new DataAccessResponseType { isSuccess = false, ErrorMessage = requestResponseType.requestMessage }); } #endregion #region Validate that no image records exist exist that use this format if (ImageRecordsManager.ImageRecordExistsForImageKey(account.AccountID.ToString(), account.StoragePartition, account.AccountNameKey, imageGroupTypeNameKey, imageGroupNameKey + "-" + imageFormatNameKey)) { //Request is not approved, send results: return(new DataAccessResponseType { isSuccess = false, ErrorMessage = "Cannot delete an image format that has any image records associated with it." }); } #endregion var result = ImageFormatsManager.DeleteImageFormat(account, imageGroupTypeNameKey, imageGroupNameKey, imageFormatNameKey); if (result.isSuccess) { #region Invalidate Account Capacity Cache AccountCapacityManager.InvalidateAccountCapacitiesCache(account.AccountID.ToString()); #endregion } return(result); }
public DataAccessResponseType UpdateImageRecordDescription(string accountId, string objectType, string objectId, string groupNameKey, string formatNameKey, string newDescription, string requesterId, RequesterType requesterType, string sharedClientKey) { // Ensure the clients are certified. if (sharedClientKey != Sahara.Core.Platform.Requests.RequestManager.SharedClientKey) { return(null); } var account = AccountManager.GetAccount(accountId); #region Validate Request var requesterName = string.Empty; var requesterEmail = string.Empty; var requestResponseType = RequestManager.ValidateRequest(requesterId, requesterType, out requesterName, out requesterEmail, Sahara.Core.Settings.Platform.Users.Authorization.Roles.Manager, Sahara.Core.Settings.Accounts.Users.Authorization.Roles.Manager); if (!requestResponseType.isApproved) { //Request is not approved, send results: return(new DataAccessResponseType { isSuccess = false, ErrorMessage = requestResponseType.requestMessage }); } #endregion #region Get image format to determine if this is a listing ImageFormatGroupModel imageGroup; var imageFormat = ImageFormatsManager.GetImageFormat(account.AccountNameKey, objectType, groupNameKey, formatNameKey, out imageGroup); if (imageFormat == null) { return(null); } #endregion var result = ImageRecordsManager.UpdateImageRecordDescriptionForObject(accountId, account.StoragePartition, objectType, objectId, groupNameKey, formatNameKey, newDescription, imageFormat.Listing); #region Invalidate Account API Caching Layer Sahara.Core.Common.Redis.ApiRedisLayer.InvalidateAccountApiCacheLayer(account.AccountNameKey); #endregion return(result); }
/* * public DataAccessResponseType UpdatePlanMaxUsers(string paymentPlanName, int newUserMax, string requesterId, RequesterType requesterType) * { #region Validate Request * * var requesterName = string.Empty; * var requesterEmail = string.Empty; * * var requestResponseType = RequestManager.ValidateRequest(requesterId, * requesterType, out requesterName, out requesterEmail, * Sahara.Core.Settings.Platform.Users.Authorization.Roles.SuperAdmin, * null); * * if (!requestResponseType.isApproved) * { * //Request is not approved, send results: * return new DataAccessResponseType { isSuccess = false, ErrorMessage = requestResponseType.requestMessage }; * * } * #endregion * * return PaymentPlanManager.UpdatePlanMaxUsers(paymentPlanName, newUserMax); * } * * public DataAccessResponseType UpdatePlanMaxCategories(string paymentPlanName, int newCategoryMax, string requesterId, RequesterType requesterType) * { #region Validate Request * * var requesterName = string.Empty; * var requesterEmail = string.Empty; * * var requestResponseType = RequestManager.ValidateRequest(requesterId, * requesterType, out requesterName, out requesterEmail, * Sahara.Core.Settings.Platform.Users.Authorization.Roles.SuperAdmin, * null); * * if (!requestResponseType.isApproved) * { * //Request is not approved, send results: * return new DataAccessResponseType { isSuccess = false, ErrorMessage = requestResponseType.requestMessage }; * * } * #endregion * * return PaymentPlanManager.UpdatePlanMaxCategories(paymentPlanName, newCategoryMax); * } * * public DataAccessResponseType UpdatePlanMaxSubcategories(string paymentPlanName, int newSubcategoryMax, string requesterId, RequesterType requesterType) * { #region Validate Request * * var requesterName = string.Empty; * var requesterEmail = string.Empty; * * var requestResponseType = RequestManager.ValidateRequest(requesterId, * requesterType, out requesterName, out requesterEmail, * Sahara.Core.Settings.Platform.Users.Authorization.Roles.SuperAdmin, * null); * * if (!requestResponseType.isApproved) * { * //Request is not approved, send results: * return new DataAccessResponseType { isSuccess = false, ErrorMessage = requestResponseType.requestMessage }; * * } * #endregion * * return PaymentPlanManager.UpdatePlanMaxSubcategories(paymentPlanName, newSubcategoryMax); * } * * public DataAccessResponseType UpdatePlanMaxTags(string paymentPlanName, int newTagMax, string requesterId, RequesterType requesterType) * { #region Validate Request * * var requesterName = string.Empty; * var requesterEmail = string.Empty; * * var requestResponseType = RequestManager.ValidateRequest(requesterId, * requesterType, out requesterName, out requesterEmail, * Sahara.Core.Settings.Platform.Users.Authorization.Roles.SuperAdmin, * null); * * if (!requestResponseType.isApproved) * { * //Request is not approved, send results: * return new DataAccessResponseType { isSuccess = false, ErrorMessage = requestResponseType.requestMessage }; * * } * #endregion * * return PaymentPlanManager.UpdatePlanMaxTags(paymentPlanName, newTagMax); * } * * * * public DataAccessResponseType UpdatePlanMaxImages(string paymentPlanName, int newImageMax, string requesterId, RequesterType requesterType) * { #region Validate Request * * var requesterName = string.Empty; * var requesterEmail = string.Empty; * * var requestResponseType = RequestManager.ValidateRequest(requesterId, * requesterType, out requesterName, out requesterEmail, * Sahara.Core.Settings.Platform.Users.Authorization.Roles.SuperAdmin, * null); * * if (!requestResponseType.isApproved) * { * //Request is not approved, send results: * return new DataAccessResponseType { isSuccess = false, ErrorMessage = requestResponseType.requestMessage }; * * } * #endregion * * return PaymentPlanManager.UpdatePlanMaxImages(paymentPlanName, newImageMax); * } * * * public DataAccessResponseType UpdatePlanAllowImageEnhancements(string paymentPlanName, bool allowEnhancements, string requesterId, RequesterType requesterType) * { #region Validate Request * * var requesterName = string.Empty; * var requesterEmail = string.Empty; * * var requestResponseType = RequestManager.ValidateRequest(requesterId, * requesterType, out requesterName, out requesterEmail, * Sahara.Core.Settings.Platform.Users.Authorization.Roles.SuperAdmin, * null); * * if (!requestResponseType.isApproved) * { * //Request is not approved, send results: * return new DataAccessResponseType { isSuccess = false, ErrorMessage = requestResponseType.requestMessage }; * * } * #endregion * * return PaymentPlanManager.UpdatePlanAllowImageEnhancements(paymentPlanName, allowEnhancements); * } * */ #endregion #endregion #region Delete public DataAccessResponseType DeletePaymentPlan(string paymentPlanName, string requesterId, RequesterType requesterType, string sharedClientKey) { // Ensure the clients are certified. if (sharedClientKey != Sahara.Core.Platform.Requests.RequestManager.SharedClientKey) { return(null); } #region Validate Request var requesterName = string.Empty; var requesterEmail = string.Empty; var requestResponseType = RequestManager.ValidateRequest(requesterId, requesterType, out requesterName, out requesterEmail, Sahara.Core.Settings.Platform.Users.Authorization.Roles.SuperAdmin, null); if (!requestResponseType.isApproved) { //Request is not approved, send results: return(new DataAccessResponseType { isSuccess = false, ErrorMessage = requestResponseType.requestMessage }); } #endregion return(PaymentPlanManager.DeletePaymentPlan(paymentPlanName)); }
public DataAccessResponseType SendEmailToBulkAccounts(string fromName, string fromEmail, string emailSubject, string emailMessage, bool isImportant, bool accountOwnersOnly, string columnName, string columnValue, string requesterId, RequesterType requesterType, string sharedClientKey) { // Ensure the clients are certified. if (sharedClientKey != Sahara.Core.Platform.Requests.RequestManager.SharedClientKey) { return(null); } #region Validate Request var requesterName = string.Empty; var requesterEmail = string.Empty; var requestResponseType = RequestManager.ValidateRequest(requesterId, requesterType, out requesterName, out requesterEmail, Sahara.Core.Settings.Platform.Users.Authorization.Roles.SuperAdmin, null); //<-- Only PlatformUsers can send notifications if (!requestResponseType.isApproved) { //Request is not approved, send results: return(new DataAccessResponseType { isSuccess = false, ErrorMessage = requestResponseType.requestMessage }); } #endregion return(AccountManager.SendEmailToBulkAccounts(fromEmail, fromName, emailSubject, emailMessage, accountOwnersOnly, isImportant, columnName, columnValue)); }
public DataAccessResponseType SendNotificationToUser(NotificationType notificationMessageType, string userId, string notificationMessage, double expirationMinutes, string requesterId, RequesterType requesterType, string sharedClientKey) { // Ensure the clients are certified. if (sharedClientKey != Sahara.Core.Platform.Requests.RequestManager.SharedClientKey) { return(null); } #region Validate Request var requesterName = string.Empty; var requesterEmail = string.Empty; var requestResponseType = RequestManager.ValidateRequest(requesterId, requesterType, out requesterName, out requesterEmail, Sahara.Core.Settings.Platform.Users.Authorization.Roles.Admin, null); //<-- Only PlatformUsers can send notifications if (!requestResponseType.isApproved) { //Request is not approved, send results: return(new DataAccessResponseType { isSuccess = false, ErrorMessage = requestResponseType.requestMessage }); } #endregion //return NotificationsManager.SendNotificationToUser(notificationMessageType, userId, notificationMessage, expirationMinutes); return(null); }
public DataAccessResponseType ProvisionAccount(string accountId, string requesterId, RequesterType requesterType, string sharedClientKey) { // Ensure the clients are certified. if (sharedClientKey != Sahara.Core.Platform.Requests.RequestManager.SharedClientKey) { return(null); } #region Validate Request var requesterName = string.Empty; var requesterEmail = string.Empty; var requestResponseType = RequestManager.ValidateRequest(requesterId, requesterType, out requesterName, out requesterEmail, Sahara.Core.Settings.Platform.Users.Authorization.Roles.SuperAdmin, null); //<-- Only Platform Super Admins can provision accounts if (!requestResponseType.isApproved) { //Request is not approved, send results: return(new DataAccessResponseType { isSuccess = false, ErrorMessage = requestResponseType.requestMessage }); } #endregion if (accountId == null) { //Request is not approved, send results: return(new DataAccessResponseType { isSuccess = false, ErrorMessage = "AccountID cannot be null" }); } var response = new DataAccessResponseType(); // 0. Check to see if the account has been previously verified: var account = AccountManager.GetAccount(accountId, false, AccountManager.AccountIdentificationType.AccountID); if (account.Provisioned) { response.isSuccess = false; response.ErrorMessage = "This account has already been provisioned"; return(response); } if (account.StripeSubscriptionID == null || account.StripeCustomerID == null || account.PaymentPlan.MonthlyRate == 0) { response.isSuccess = false; response.ErrorMessage = "This account has not been assigned a payment plan or a Stripe CustomerID"; return(response); } else { // 1. Send provisioning request for the Worker via the PlatformQueue PlatformQueuePipeline.SendMessage.ProvisionAccount(accountId); // 2. Set Active state to TRUE to indicate that PlatformAdmin has activated the account and is now PENDING provisioning AccountManager.UpdateAccountActiveState(account.AccountID.ToString(), true); // 3. Invalidated/Update the cache for this account AccountManager.UpdateAccountDetailCache(accountId); // 4. Log the activity PlatformLogManager.LogActivity(Sahara.Core.Logging.PlatformLogs.Types.CategoryType.Account, Sahara.Core.Logging.PlatformLogs.Types.ActivityType.Account_Provisioning_Requested, "Provisioning request sent for: '" + account.AccountName + "'", "Provisioning request sent.", accountId, account.AccountName); // 4. Return results! response.SuccessMessage = "Account provisioning request sent!"; response.isSuccess = true; } return(response); }
public DataAccessResponseType RefundPayment(string accountId, string chargeId, decimal refundAmount, string requesterID, RequesterType requesterType, string sharedClientKey) { // Ensure the clients are certified. if (sharedClientKey != Sahara.Core.Platform.Requests.RequestManager.SharedClientKey) { return(null); } if (String.IsNullOrEmpty(accountId)) { return(new DataAccessResponseType { isSuccess = false, ErrorMessage = "Must include an accountId" }); } #region Validate Request var requesterName = string.Empty; var requesterEmail = string.Empty; var requestResponseType = RequestManager.ValidateRequest(requesterID, requesterType, out requesterName, out requesterEmail, Sahara.Core.Settings.Platform.Users.Authorization.Roles.SuperAdmin, //<-- Only Platform SuperAdmins can refund payments null); if (!requestResponseType.isApproved) { //Request is not approved, send results: return(new DataAccessResponseType { isSuccess = false, ErrorMessage = requestResponseType.requestMessage }); } #endregion return(PlatformBillingManager.RefundPayment(accountId, chargeId, refundAmount)); }
public DataAccessResponseType SpendCredits(string accountId, int creditAmount, string description, string requesterId, RequesterType requesterType, string ipAddress, string origin, string sharedClientKey) { // Ensure the clients are certified. if (sharedClientKey != Sahara.Core.Platform.Requests.RequestManager.SharedClientKey) { return(null); } #region Validate Request var requesterName = string.Empty; var requesterEmail = string.Empty; //Only Platform Admins and Account Users and up can spend credits (a little more lax than purchasing) var requestResponseType = RequestManager.ValidateRequest(requesterId, requesterType, out requesterName, out requesterEmail, Sahara.Core.Settings.Platform.Users.Authorization.Roles.Admin, Sahara.Core.Settings.Accounts.Users.Authorization.Roles.User); if (!requestResponseType.isApproved) { //Request is not approved, send results: return(new DataAccessResponseType { isSuccess = false, ErrorMessage = requestResponseType.requestMessage }); } #endregion var result = AccountCreditsManager.SpendCredits(accountId, creditAmount, description); #region Log Account Activity if (result.isSuccess) { /*try * { * AccountLogManager.LogActivity( * accountId, * CategoryType.Credits, * ActivityType.Credits_Spent, * creditAmount + " credits spent", * requesterName + " spent " + creditAmount + " credits on '" + description + "'", * requesterId, * requesterName, * requesterEmail, * ipAddress, * origin); * } * catch { }*/ } #endregion return(result); }
public DataAccessResponseType DeletePlatformUser(string userId, string requesterId, RequesterType requesterType, string sharedClientKey) { // Ensure the clients are certified. if (sharedClientKey != Sahara.Core.Platform.Requests.RequestManager.SharedClientKey) { return(null); } #region Validate Request var requesterName = string.Empty; var requesterEmail = string.Empty; var requestResponseType = RequestManager.ValidateRequest(requesterId, requesterType, out requesterName, out requesterEmail, Sahara.Core.Settings.Platform.Users.Authorization.Roles.SuperAdmin, null); if (!requestResponseType.isApproved) { //Request is not approved, send results: return(new DataAccessResponseType { isSuccess = false, ErrorMessage = requestResponseType.requestMessage }); } #endregion var user = PlatformUserManager.GetUser(userId); var result = PlatformUserManager.DeleteUser(userId); #region Log Platform Activity if (result.isSuccess) { try { PlatformLogManager.LogActivity( CategoryType.PlatformUser, ActivityType.PlatformUser_Deleted, "User deleted", requesterName + " deleted " + user.FullName + "'s account", null, null, requesterId, requesterName, requesterEmail ); } catch { } } #endregion return(result); }
/// <summary> /// Before "adding" an image to an object the client must upload a source file to a dated directory within intermediary storage. /// Pass in the source file info along with any cropping or enhancement instructions and you will get back the final image id after processing is complete/ /// Intermediary directory MUST named by todays date: "DD-MM-YYYY", this directory will be garbage collected by the Custodian at a set interval /// </summary> public DataAccessResponseType ProcessImage(string accountId, ImageProcessingManifestModel imageManifest, ImageCropCoordinates imageCropCoordinates, string requesterId, RequesterType requesterType, ImageEnhancementInstructions imageEnhancementInstructions, string sharedClientKey) { // Ensure the clients are certified. if (sharedClientKey != Sahara.Core.Platform.Requests.RequestManager.SharedClientKey) { return(null); } var account = AccountManager.GetAccount(accountId); #region Adjust negative crop coordinates for top/left pixel //if any top/left values fall below 0 we adjust to 0 if (imageCropCoordinates.Top < 0) { imageCropCoordinates.Top = 0; } if (imageCropCoordinates.Left < 0) { imageCropCoordinates.Left = 0; } #endregion #region Validate Request var requesterName = string.Empty; var requesterEmail = string.Empty; var requestResponseType = RequestManager.ValidateRequest(requesterId, requesterType, out requesterName, out requesterEmail, Sahara.Core.Settings.Platform.Users.Authorization.Roles.Manager, Sahara.Core.Settings.Accounts.Users.Authorization.Roles.Manager); if (!requestResponseType.isApproved) { //Request is not approved, send results: return(new DataAccessResponseType { isSuccess = false, ErrorMessage = requestResponseType.requestMessage }); } #endregion #region Validate Plan Capabilities // If enhancement instructions are sent, verify that current plan allows for it if (imageEnhancementInstructions != null && account.PaymentPlan.AllowImageEnhancements == false) { return(new DataAccessResponseType { isSuccess = false, ErrorMessage = "Your account plan does not allow for image enhancements, please submit your job without enhancement instructions." }); } //Verify that current image count is below maximum allowed by this plan //if (ApplicationImagesManager.GetApplicationImageCount(account) >= account.PaymentPlan.MaxProducts) //{ //Log Limitation Issues (or send email) so that Platform Admins can immediatly contact Accounts that have hit their limits an upsell themm //Sahara.Core.Logging.PlatformLogs.Helpers.PlatformLimitationsHelper.LogLimitationAndAlertAdmins("images", account.AccountID.ToString(), account.AccountName); //return new DataAccessResponseType { isSuccess = false, ErrorMessage = "Your account plan does not allow for more than " + account.PaymentPlan.MaxProducts + " images, please update your plan." }; //} #endregion var result = ApplicationImageProcessingManager.ProcessAndRecordApplicationImage(account, imageManifest, imageCropCoordinates, imageEnhancementInstructions); #region Log Account Activity if (result.isSuccess) { /*try * { * * //Object Log --------------------------- * AccountLogManager.LogActivity( * accountId, * CategoryType.ApplicationImage, * ActivityType.ApplicationImage_Created, * "Application image created", * requesterName + " created an application image", * requesterId, * requesterName, * requesterEmail, * null, * null, * result.SuccessMessage); * } * catch { }*/ } #endregion #region Invalidate Account Capacity Cache //AccountCapacityManager.InvalidateAccountCapacitiesCache(accountId); #endregion #region Invalidate Account API Caching Layer Sahara.Core.Common.Redis.ApiRedisLayer.InvalidateAccountApiCacheLayer(account.AccountNameKey); #endregion return(result); }
public DataAccessResponseType UpdatePlatformUserPassword(string email, string currentPassword, string newPassword, string requesterId, RequesterType requesterType, string sharedClientKey) { // Ensure the clients are certified. if (sharedClientKey != Sahara.Core.Platform.Requests.RequestManager.SharedClientKey) { return(null); } #region Validate Request var requesterName = string.Empty; var requesterEmail = string.Empty; var requestResponseType = RequestManager.ValidateRequest(requesterId, requesterType, out requesterName, out requesterEmail, Sahara.Core.Settings.Platform.Users.Authorization.Roles.SuperAdmin, null); if (!requestResponseType.isApproved) { //Request is not approved, send results: return(new DataAccessResponseType { isSuccess = false, ErrorMessage = requestResponseType.requestMessage }); } #endregion var result = PlatformUserManager.ChangePassword(email, currentPassword, newPassword); #region Log Platform Activity if (result.isSuccess) { try { PlatformLogManager.LogActivity( CategoryType.PlatformUser, ActivityType.PlatformUser_Invited, "Password changed", requesterName + " has updated their password", null, null, requesterId, requesterName, requesterEmail ); } catch { } } #endregion return(result); }
public DataAccessResponseType DeleteGalleryImage(string accountId, string objectType, string objectId, string groupNameKey, string formatNameKey, int imageIndex, string requesterId, RequesterType requesterType, string sharedClientKey) { // Ensure the clients are certified. if (sharedClientKey != Sahara.Core.Platform.Requests.RequestManager.SharedClientKey) { return(null); } var account = AccountManager.GetAccount(accountId); #region Validate Request var requesterName = string.Empty; var requesterEmail = string.Empty; var requestResponseType = RequestManager.ValidateRequest(requesterId, requesterType, out requesterName, out requesterEmail, Sahara.Core.Settings.Platform.Users.Authorization.Roles.Manager, Sahara.Core.Settings.Accounts.Users.Authorization.Roles.Manager); if (!requestResponseType.isApproved) { //Request is not approved, send results: return(new DataAccessResponseType { isSuccess = false, ErrorMessage = requestResponseType.requestMessage }); } #endregion var result = ImageRecordsManager.DeleteGalleryImage(account, objectType, objectId, groupNameKey, formatNameKey, imageIndex); #region Invalidate Account API Caching Layer Sahara.Core.Common.Redis.ApiRedisLayer.InvalidateAccountApiCacheLayer(account.AccountNameKey); #endregion return(result); }
public DataAccessResponseType CreatePaymentPlan(string paymentPlanName, decimal monthlyRate, int maxUsers, int maxCategorizationsPerSet, int maxProductsPerSet, int maxProperties, int maxValuesPerProperty, int maxTags, bool allowSalesLeads, bool allowImageEnhancements, bool allowLocationData, bool allowCustomOrdering, bool allowThemes, int monthlySupportHours, int maxImageGroups, int maxImageFormats, int maxImageGalleries, int maxImagesPerGallery, bool visible, string requesterId, RequesterType requesterType, string sharedClientKey) { // Ensure the clients are certified. if (sharedClientKey != Sahara.Core.Platform.Requests.RequestManager.SharedClientKey) { return(null); } #region Validate Request var requesterName = string.Empty; var requesterEmail = string.Empty; var requestResponseType = RequestManager.ValidateRequest(requesterId, requesterType, out requesterName, out requesterEmail, Sahara.Core.Settings.Platform.Users.Authorization.Roles.SuperAdmin, null); if (!requestResponseType.isApproved) { //Request is not approved, send results: return(new DataAccessResponseType { isSuccess = false, ErrorMessage = requestResponseType.requestMessage }); } #endregion var paymentPlan = new PaymentPlan { PaymentPlanName = paymentPlanName, MonthlyRate = monthlyRate, MaxUsers = maxUsers, MaxCategorizationsPerSet = maxCategorizationsPerSet, MaxProductsPerSet = maxProductsPerSet, MaxProperties = maxProperties, MaxValuesPerProperty = maxValuesPerProperty, MaxTags = maxTags, AllowImageEnhancements = allowImageEnhancements, MonthlySupportHours = monthlySupportHours, //BasicSupport = basicSupport, //EnhancedSupport = enhancedSupport, AllowSalesLeads = allowSalesLeads, AllowLocationData = allowLocationData, AllowCustomOrdering = allowCustomOrdering, AllowThemes = allowThemes, MaxImageGroups = maxImageGroups, MaxImageFormats = maxImageFormats, MaxImageGalleries = maxImageGalleries, MaxImagesPerGallery = maxImagesPerGallery, Visible = visible }; return(PaymentPlanManager.CreatePaymentPlan(paymentPlan)); }
public DataAccessResponseType DeleteTag(string accountId, string tagName, string requesterId, RequesterType requesterType, string sharedClientKey) { // Ensure the clients are certified. if (sharedClientKey != Sahara.Core.Platform.Requests.RequestManager.SharedClientKey) { return(null); } //Get ACCOUNT var account = AccountManager.GetAccount(accountId, true, AccountManager.AccountIdentificationType.AccountID); #region Validate Request var requesterName = string.Empty; var requesterEmail = string.Empty; var requestResponseType = RequestManager.ValidateRequest(requesterId, requesterType, out requesterName, out requesterEmail, Sahara.Core.Settings.Platform.Users.Authorization.Roles.Manager, Sahara.Core.Settings.Accounts.Users.Authorization.Roles.Manager); if (!requestResponseType.isApproved) { //Request is not approved, send results: return(new DataAccessResponseType { isSuccess = false, ErrorMessage = requestResponseType.requestMessage }); } #endregion var result = TagManager.DeleteTag(account, tagName); #region Log Account Activity if (result.isSuccess) { try { //Object Log --------------------------- AccountLogManager.LogActivity( accountId, account.StoragePartition, CategoryType.Inventory, ActivityType.Inventory_TagDeleted, "Tag '" + tagName + "' deleted", requesterName + " deleted the '" + tagName + "' tag", requesterId, requesterName, requesterEmail, null, null, result.SuccessMessage); } catch { } } #endregion #region Invalidate Account Capacity Cache AccountCapacityManager.InvalidateAccountCapacitiesCache(accountId); #endregion #region Invalidate Account API Caching Layer Sahara.Core.Common.Redis.ApiRedisLayer.InvalidateAccountApiCacheLayer(account.AccountNameKey); #endregion return(result); }
public static string SharedClientKey = "[Config_SharedClientKey]"; //<-- Used to verify calls for WCF service methods NOT tied to a user login. public static RequestResponseType ValidateRequest(string requesterId, RequesterType requsterType, out string requesterName, out string requesterEmail, string lowestRoleRequirementPlatform = null, string lowestRoleRequirementAccount = null, bool requiresAccountOwner = false, bool ignoreAccountActiveState = false) { var response = new RequestResponseType(); requesterName = string.Empty; requesterEmail = string.Empty; #region validate request if (string.IsNullOrEmpty(requesterId)) { return(new RequestResponseType { isApproved = false, requestMessage = "A valid RequesterID must be used with this action" }); } /* * if (requsterType == null) * { * return new RequestResponseType { isApproved = false, requestMessage = "A RequesterType must be used with this action" }; * }*/ #endregion switch (requsterType) { //Request is exempt from further validation case RequesterType.Exempt: { response.isApproved = true; response.requestMessage = "This request is exempt from validation."; #region get the requester info for the out object for logging purposes in WCF services try { var requestUser = AccountUserManager.GetUser(requesterId); if (requestUser != null) { requesterName = requestUser.FirstName; requesterEmail = requestUser.Email; } else { var plaformUser = PlatformUserManager.GetUser(requesterId); requesterName = plaformUser.FirstName; requesterEmail = plaformUser.Email; } } catch { var requestUser = PlatformUserManager.GetUser(requesterId); requesterName = requestUser.FirstName; requesterEmail = requestUser.Email; } #endregion break; } //validate request for a PlatformUser: case RequesterType.PlatformUser: { if (lowestRoleRequirementPlatform != null) { //userRole = PlatformUserManager.GetUserRole(requesterId); var platformUser = PlatformUserManager.GetUser(requesterId); requesterName = platformUser.FirstName; requesterEmail = platformUser.Email; //userRole = AccountUserManager.GetUserRole(requesterId); //Check requester Active state: if (!platformUser.Active) { response.isApproved = false; response.requestMessage = "You must be an active platform user to make this request."; //immediatley return the failed result return(response); } //Check requester role: response.isApproved = Internal.RoleChecker.IsRoleAllowed(requsterType, platformUser.Role, lowestRoleRequirementPlatform); if (response.isApproved) { response.requestMessage = "This request is valid."; } else { response.requestMessage = "This request is not valid for this platform user role."; } } else { response.isApproved = false; response.requestMessage = "This request is not valid for platform users"; } break; } //Validate request(s) for an AccountUser: case RequesterType.AccountUser: { var accountUser = AccountUserManager.GetUser(requesterId); requesterName = accountUser.FirstName; requesterEmail = accountUser.Email; var account = AccountManager.GetAccount(accountUser.AccountID.ToString(), true, AccountManager.AccountIdentificationType.AccountID); //Ensure that the account is Active (and Active state is not ignored): if (!ignoreAccountActiveState && !account.Active) { response.isApproved = false; response.requestMessage = "This account is not currently active."; //Immediately return the failed result return(response); } if (!account.Provisioned) { response.isApproved = false; response.requestMessage = "This account is not yet provisioned."; //Immediately return the failed result return(response); } /* * //Ensure that the account is Active (and Active state is not ignored): * if (!ignoreAccountActiveState && !AccountManager.IsAccountActive(accountUser.AccountID.ToString())) * { * response.isApproved = false; * response.requestMessage = "This account is not currently active."; * //Immediately return the failed result * return response; * } * */ if (requiresAccountOwner) { //Check if the user is an account owner if (accountUser.AccountOwner) { response.isApproved = true; response.requestMessage = "This request is valid."; } else { response.isApproved = false; response.requestMessage = "Only account owners can make this request or update."; //Immediately return the failed result return(response); } } else if (lowestRoleRequirementAccount != null) { //Check requester Active state: if (!accountUser.Active) { response.isApproved = false; response.requestMessage = "You must be an active account user to make this request."; //Immediately return the failed result return(response); } //Check requester role: response.isApproved = Internal.RoleChecker.IsRoleAllowed(requsterType, accountUser.Role, lowestRoleRequirementAccount); if (response.isApproved) { response.requestMessage = "This request is valid."; } else { response.requestMessage = "This request is not valid for this account user role."; //immediatly return the failed result return(response); } } else { response.isApproved = false; response.requestMessage = "This request is not valid for account users"; //immediatly return the failed result return(response); } break; } default: { response.isApproved = false; response.requestMessage = "Cannot validate this request with the parameters given."; break; } } return(response); }
public DataAccessResponseType CreateTag(string accountId, string tagName, string requesterId, RequesterType requesterType, string sharedClientKey) { // Ensure the clients are certified. if (sharedClientKey != Sahara.Core.Platform.Requests.RequestManager.SharedClientKey) { return(null); } //Get ACCOUNT var account = AccountManager.GetAccount(accountId, true, AccountManager.AccountIdentificationType.AccountID); #region Validate Request var requesterName = string.Empty; var requesterEmail = string.Empty; var requestResponseType = RequestManager.ValidateRequest(requesterId, requesterType, out requesterName, out requesterEmail, Sahara.Core.Settings.Platform.Users.Authorization.Roles.Manager, Sahara.Core.Settings.Accounts.Users.Authorization.Roles.Manager); if (!requestResponseType.isApproved) { //Request is not approved, send results: return(new DataAccessResponseType { isSuccess = false, ErrorMessage = requestResponseType.requestMessage }); } #endregion #region Validate Plan Capabilities //Verify that current tag count is below maximum allowed by this plan if (TagManager.GetTagCount(account.AccountNameKey) >= account.PaymentPlan.MaxTags) { //Log Limitation Issues (or send email) so that Platform Admins can immediatly contact Accounts that have hit their limits an upsell themm Sahara.Core.Logging.PlatformLogs.Helpers.PlatformLimitationsHelper.LogLimitationAndAlertAdmins("tags", account.AccountID.ToString(), account.AccountName); return(new DataAccessResponseType { isSuccess = false, ErrorMessage = "Your account plan does not allow for more than " + account.PaymentPlan.MaxTags + " tags, please update your plan to add more." }); } #endregion var result = TagManager.CreateTag(account, tagName); #region Log Account Activity if (result.isSuccess) { try { //Object Log --------------------------- AccountLogManager.LogActivity( accountId, account.StoragePartition, CategoryType.Inventory, ActivityType.Inventory_TagCreated, "Tag '" + tagName + "' created", requesterName + " created '" + tagName + "' tag", requesterId, requesterName, requesterEmail, null, null, result.SuccessMessage); } catch { } } #endregion #region Invalidate Account Capacity Cache AccountCapacityManager.InvalidateAccountCapacitiesCache(accountId); #endregion #region Invalidate Account API Caching Layer Sahara.Core.Common.Redis.ApiRedisLayer.InvalidateAccountApiCacheLayer(account.AccountNameKey); #endregion return(result); }
public DataAccessResponseType CreateImageGroup(string accountNameKey, string imageGroupTypeNameKey, string imageGroupName, string requesterId, RequesterType requesterType, string sharedClientKey) { // Ensure the clients are certified. if (sharedClientKey != Sahara.Core.Platform.Requests.RequestManager.SharedClientKey) { return(null); } //Get ACCOUNT var account = AccountManager.GetAccount(accountNameKey, true, AccountManager.AccountIdentificationType.AccountName); #region Validate Request var requesterName = string.Empty; var requesterEmail = string.Empty; var requestResponseType = RequestManager.ValidateRequest(requesterId, requesterType, out requesterName, out requesterEmail, Sahara.Core.Settings.Platform.Users.Authorization.Roles.Admin, Sahara.Core.Settings.Accounts.Users.Authorization.Roles.Admin); if (!requestResponseType.isApproved) { //Request is not approved, send results: return(new DataAccessResponseType { isSuccess = false, ErrorMessage = requestResponseType.requestMessage }); } #endregion var result = ImageFormatsManager.CreateImageGroup(account, imageGroupTypeNameKey, imageGroupName); if (result.isSuccess) { #region Invalidate Account Capacity Cache AccountCapacityManager.InvalidateAccountCapacitiesCache(account.AccountID.ToString()); #endregion } return(result); }
public List <PlatformPasswordResetClaim> GetLostPasswordClaims(string requesterId, RequesterType requesterType, string sharedClientKey) { // Ensure the clients are certified. if (sharedClientKey != Sahara.Core.Platform.Requests.RequestManager.SharedClientKey) { return(null); } #region Validate Request var requesterName = string.Empty; var requesterEmail = string.Empty; var requestResponseType = RequestManager.ValidateRequest(requesterId, requesterType, out requesterName, out requesterEmail, Sahara.Core.Settings.Platform.Users.Authorization.Roles.SuperAdmin, null); if (!requestResponseType.isApproved) { //Request is not approved, send results: return(null); } #endregion return(PlatformUserManager.GetPasswordClaims()); }
public DataAccessResponseType RemoveLabel(string accountNameKey, string labelName, string requesterId, RequesterType requesterType, string sharedClientKey) { // Ensure the clients are certified. if (sharedClientKey != Sahara.Core.Platform.Requests.RequestManager.SharedClientKey) { return(null); } //Get ACCOUNT var account = AccountManager.GetAccount(accountNameKey, true, AccountManager.AccountIdentificationType.AccountName); #region Validate Request var requesterName = string.Empty; var requesterEmail = string.Empty; var requestResponseType = RequestManager.ValidateRequest(requesterId, requesterType, out requesterName, out requesterEmail, Sahara.Core.Settings.Platform.Users.Authorization.Roles.Manager, Sahara.Core.Settings.Accounts.Users.Authorization.Roles.Manager); if (!requestResponseType.isApproved) { //Request is not approved, send results: return(new DataAccessResponseType { isSuccess = false, ErrorMessage = requestResponseType.requestMessage }); } #endregion var result = LeadsManager.RemoveLabel(account, labelName); #region Log Account Activity /* * if (result.isSuccess) * { * try * { * * //Object Log --------------------------- * AccountLogManager.LogActivity( * accountId, * CategoryType.Inventory, * ActivityType.Inventory_PropertyCreated, * "Property '" + propertyName + "' created", * requesterName + " created '" + propertyName + "' property", * requesterId, * requesterName, * requesterEmail, * null, * null, * result.SuccessMessage); * } * catch { } * } */ #endregion return(result); }
public DataAccessResponseType CreatePlatformUser(string email, string firstName, string lastName, string password, string roleName, string requesterId, RequesterType requesterType, string sharedClientKey) { // Ensure the clients are certified. if (sharedClientKey != Sahara.Core.Platform.Requests.RequestManager.SharedClientKey) { return(null); } #region Validate Request var requesterName = string.Empty; var requesterEmail = string.Empty; var requestResponseType = RequestManager.ValidateRequest(requesterId, requesterType, out requesterName, out requesterEmail, Sahara.Core.Settings.Platform.Users.Authorization.Roles.SuperAdmin, null); if (!requestResponseType.isApproved) { //Request is not approved, send results: return(new DataAccessResponseType { isSuccess = false, ErrorMessage = requestResponseType.requestMessage }); } #endregion var result = PlatformUserManager.CreatePlatformUser(email, firstName, lastName, password, roleName); #region Log Platform Activity if (result.isSuccess) { try { PlatformLogManager.LogActivity( CategoryType.PlatformUser, ActivityType.PlatformUser_Created, "User created", requesterName + " created new user: '******'", null, null, requesterId, requesterName, requesterEmail ); } catch { } } #endregion return(result); }
public void requesterTypeAddLogicTest() { RequesterType m = new RequesterType(); m.Code = "TST"; m.FullName = "RequesterTypeAddLogicTest"; m.Enabled = true; ActionResult result = dDAdminController.Add(m, "RequesterType"); Assert.AreEqual("System.Web.Mvc.RedirectToRouteResult", result.GetType().FullName); RequesterType justAdded = db.RequesterTypes.ToArray().Last(); Assert.IsTrue(justAdded.Code.Equals("TST") && justAdded.FullName.Equals("RequesterTypeAddLogicTest") && justAdded.Enabled); }
public DataAccessResponseType TradeCredits(string fromAccountId, string toAccountId, int creditAmount, string description, string requesterId, RequesterType requesterType, string ipAddress, string origin, string sharedClientKey) { // Ensure the clients are certified. if (sharedClientKey != Sahara.Core.Platform.Requests.RequestManager.SharedClientKey) { return(null); } #region Validate Request var requesterName = string.Empty; var requesterEmail = string.Empty; //Only Platform Admins and Account Users and up can spend credits (a little more lax than purchasing) var requestResponseType = RequestManager.ValidateRequest(requesterId, requesterType, out requesterName, out requesterEmail, Sahara.Core.Settings.Platform.Users.Authorization.Roles.Admin, Sahara.Core.Settings.Accounts.Users.Authorization.Roles.User); if (!requestResponseType.isApproved) { //Request is not approved, send results: return(new DataAccessResponseType { isSuccess = false, ErrorMessage = requestResponseType.requestMessage }); } #endregion Sahara.Core.Accounts.Models.Account receiverAccount; var result = AccountCreditsManager.TradeCredits(fromAccountId, toAccountId, creditAmount, description, out receiverAccount); #region Log Account Activity if (result.isSuccess) { /*try * { * //Log the activity for both giver and receiver * * //Trader * AccountLogManager.LogActivity( * fromAccountId, * CategoryType.Credits, * ActivityType.Credits_Traded, * creditAmount + " credits traded", * requesterName + " traded " + creditAmount + " credits to '" + receiverAccount.AccountName + "' for '" + description + "'", * requesterId, * requesterName, * requesterEmail, * ipAddress, * origin); * * var fromAccountName = "Another account"; * * try * { * fromAccountName = AccountManager.GetAccountName(fromAccountId); * } * catch(Exception e) * { * * }*/ //Tradee /* * AccountLogManager.LogActivity( * toAccountId, * CategoryType.Credits, * ActivityType.Credits_Received, * creditAmount + " credits received", * requesterName + " from '" + fromAccountName + "' sent you " + creditAmount + " credits for '" + description + "'", * requesterId, * requesterName, * requesterEmail, * ipAddress, * origin); * } * catch { }*/ } #endregion return(result); }