コード例 #1
0
        /// <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);
        }
コード例 #2
0
        // 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);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        /// <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;
             */
        }
コード例 #5
0
        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);
        }
コード例 #6
0
        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);
        }
コード例 #7
0
        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);
        }
コード例 #8
0
        /*
         * 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));
        }
コード例 #9
0
        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));
        }
コード例 #10
0
        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);
        }
コード例 #11
0
        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);
        }
コード例 #12
0
        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));
        }
コード例 #13
0
        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);
        }
コード例 #14
0
        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);
        }
コード例 #15
0
        /// <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);
        }
コード例 #16
0
        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);
        }
コード例 #17
0
        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);
        }
コード例 #18
0
        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));
        }
コード例 #19
0
        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);
        }
コード例 #20
0
        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);
        }
コード例 #21
0
        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);
        }
コード例 #22
0
        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);
        }
コード例 #23
0
        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());
        }
コード例 #24
0
        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);
        }
コード例 #25
0
        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);
        }
コード例 #26
0
 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);
 }
コード例 #27
0
        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);
        }