Inheritance: IHasSiteItemId
        public ActionResult Create()
        {
            SiteUser user = new SiteUser();
            user.UserTitleList = EnumHelper.GetSelectList<enUserTitle>(); 

            return View("CreateOrEdit", user);
        }
    protected void SubBtnClick(object sender, EventArgs e)
    {
        DateTime bDate;
        //instantiate a new Site User
        SiteUser s = new SiteUser();
        //assign values to properties from text boxes
        s.FirstName = txtFirstName.Text;
        s.LastName = txtLastName.Text;
        bool IsDate = DateTime.TryParse(txtBirthday.Text, out bDate);
        if (IsDate)
        {
            s.BirthDay = bDate;
        }
        else
        {
            Response.Write("<script type='text/javaScript'>alert('Enter a valid date')</script>");
            return;
        }
        s.Email = txtEmail.Text;

        //save new instance to a session variable
        Session["NewUser"] = s;

        //redirect to next page
        Response.Redirect("Default2.aspx");
    }
示例#3
0
    /// This code creates an instance of the SiteUser class.
    /// It then assigns the user-entered registration information to the class properties.
    protected void Button1_Click(object sender, EventArgs e)
    {
        SiteUser su = new SiteUser();
        su.LastName = txtLastName.Text;
        su.FirstName = txtFirstName.Text;
        su.BirthDay = txtBirthday.Text;
        su.Email = txtEmail.Text;

        ///This code creates a session variable that stores the above class for use on other pages.
        ///It then redirects to the second page.
        Session["siteuser"] = su;
        Response.Redirect("Default2.aspx");
    }
    protected void SendEmailNotification(SiteUser user)
    {
        StringBuilder template = new StringBuilder(AppUtil.ReadEmailTemplate(AppConstants.EmailTemplate.GENERAL_TEMPLATE));
        if (template.Length > 0)
        {
            String fromEmail = ConfigReader.SupportEmail;
            String subject = "Medstudy Admin : Activate your account.";
            StringBuilder sb = new StringBuilder(10);
            sb.AppendFormat("Dear {0} {1} {2},<br/><br/>", AppUtil.Encode(user.FirstName), AppUtil.Encode(user.MiddleName), AppUtil.Encode(user.LastName));
            sb.Append("You have successfully created your profile. Please click on the following link to activate your account.<br/><br/>");
            String Url = String.Format("{0}{1}?{2}={3}", AppUtil.GetDomainAddress(), AppConstants.Pages.ACTIVATE_ACCOUNT, AppConstants.UrlParams.KEY, user.ActivationKey);
            sb.AppendFormat("<a href='{0}'>{0}</a>", Url);
            sb.Append("<br/><br/>");
            sb.Append("Thanks");

            template.Replace(AppConstants.EmailTemplate.CustomTag.MESSAGE, sb.ToString());

            MailHelper.SendMail(user.Email, String.Empty, String.Empty, fromEmail, subject, template.ToString());

        }
    }
 public ActionResult Create(SiteUser user)
 {
     if (ModelState.IsValid)
     {
         int counter = db.Users.Where(c => (c.USER_NUMBER == user.USER_NUMBER && c.USER_ID != user.USER_ID) || (c.EMAILID == user.EMAILID && c.USER_ID != user.USER_ID)).Count();
         if (counter == 0)
         {
             user.LOGIN_DATE = System.DateTime.Now;
             user.CREATION_DATE = System.DateTime.Now;
             user.MODIFY_DATE = System.DateTime.Now;
             db.Users.Add(user);
             db.SaveChanges();
             return RedirectToAction("Index");
         }
         else
         {
             ModelState.AddModelError(string.Empty, "User ID & Email must be unique");
         }
     }
     user.UserTitleList = EnumHelper.GetSelectList<enUserTitle>(); 
     return View("CreateOrEdit", user);
 }
示例#6
0
        public async Task<ActionResult> Register(RegisterViewModel model)
        {
            if (ModelState.IsValid)
            {
                var user = new SiteUser { UserName = model.Email, Email = model.Email };
                var result = await UserManager.CreateAsync(user, model.Password);
                if (result.Succeeded)
                {
                    await SignInManager.SignInAsync(user, isPersistent:false, rememberBrowser:false);
                    
                    // For more information on how to enable account confirmation and password reset please visit http://go.microsoft.com/fwlink/?LinkID=320771
                    // Send an email with this link
                    // string code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id);
                    // var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = code }, protocol: Request.Url.Scheme);
                    // await UserManager.SendEmailAsync(user.Id, "Confirm your account", "Please confirm your account by clicking <a href=\"" + callbackUrl + "\">here</a>");

                    return RedirectToAction("Index", "Posts");
                }
                AddErrors(result);
            }

            // If we got this far, something failed, redisplay form
            return View(model);
        }
 public UserPreDeleteEventArgs(SiteUser siteUser, bool flaggedAsDeletedOnly)
 {
     _siteUser = siteUser;
     _flaggedAsDeletedOnly = flaggedAsDeletedOnly;
 }
        public override MembershipUser GetUser(string username, bool userIsOnline)
        {
            /*
                                     * 	Takes, as input, a user name or user ID (the method is overloaded) and a
                                     * Boolean value indicating whether to update the user's LastActivityDate to
                                     * show that the user is currently online. GetUser returns a MembershipUser object
                                     * representing the specified user. If the user name or user ID is invalid (that is, if
                                     * it doesn't represent a registered user) GetUser returns null (Nothing in Visual Basic).
                                     */

            if ((username != null) && (username.Length > 0))
            {
                SiteUser siteUser = null;
                siteUser = new SiteUser(username);
                if (siteUser.UserId != Guid.Empty)
                {
                    if (userIsOnline)
                    {
                        //siteUser.UpdateLastActivityTime();
                    }
                    return this.CreateMembershipUserFromSiteUser(siteUser);
                }
            }

            return null;
        }
        public override bool ChangePassword(string username, string oldPassword, string newPassword)
        {
            /*
                                     * Takes, as input, a user name, a password (the user's current password), and a
                                     * new password and updates the password in the membership data source.
                                     * ChangePassword returns true if the password was updated successfully. Otherwise,
                                     * it returns false. Before changing a password, ChangePassword calls the provider's
                                     * virtual OnValidatingPassword method to validate the new password. It then
                                     * changes the password or cancels the action based on the outcome of the call. If the
                                     * user name, password, new password, or password answer is not valid,
                                     * ChangePassword does not throw an exception; it simply returns false. Following a
                                     * successful password change, ChangePassword updates the user's
                                     * LastPasswordChangedDate.
                                     */

            bool result = false;

            if (
            (username == null) || (username == String.Empty)
            || (oldPassword == null) || (oldPassword == String.Empty)
            || (newPassword == null) || (newPassword == String.Empty)
            )
            {
                return result;
            }

            if (newPassword.Length < this.MinRequiredPasswordLength)
            {
                throw new ArgumentException("Mật mã không đủ độ dài");
            }

            int countNonAlphanumericCharacters = 0;
            for (int i = 0; i < newPassword.Length; i++)
            {
                if (!char.IsLetterOrDigit(newPassword, i))
                {
                    countNonAlphanumericCharacters++;
                }
            }

            if (countNonAlphanumericCharacters < MinRequiredNonAlphanumericCharacters)
            {
                throw new ArgumentException("Mật Mã Yêu Cầu Phải Có Ký Tự Đặc Biệt");
            }

            if (PasswordStrengthRegularExpression.Length > 0)
            {
                if (!Regex.IsMatch(newPassword, PasswordStrengthRegularExpression))
                {
                    throw new ArgumentException(
                    "Mật Mã Không Giống \"Regular Expression\"");
                }
            }

            ValidatePasswordEventArgs e = new ValidatePasswordEventArgs(username, newPassword, false);
            OnValidatingPassword(e);

            if (e.Cancel)
            {
                if (e.FailureInformation != null)
                {
                    throw e.FailureInformation;
                }
                else
                {
                    throw new ArgumentException("Việc đánh giá mật mã tùy ý thất bại.");
                }
            }

            SiteUser siteUser = new SiteUser(username);
            if (siteUser.UserId == Guid.Empty)
            {
                return result;
            }

            if (
            ((MembershipPasswordFormat)PasswordFormat == MembershipPasswordFormat.Hashed)
            )
            {
                if (siteUser.Password == EncodePassword(oldPassword, MembershipPasswordFormat.Hashed))
                {
                    siteUser.Password = EncodePassword(newPassword, MembershipPasswordFormat.Hashed);
                    //result = siteUser.Save();
                }
            }
            else
                if ((MembershipPasswordFormat)PasswordFormat == MembershipPasswordFormat.Encrypted)
                {
                    if (siteUser.Password == EncodePassword(oldPassword, MembershipPasswordFormat.Encrypted))
                    {
                        siteUser.Password = EncodePassword(newPassword, MembershipPasswordFormat.Encrypted);
                       // result = siteUser.Save();
                    }
                }
                else
                    if ((MembershipPasswordFormat)PasswordFormat == MembershipPasswordFormat.Clear)
                    {
                        if (siteUser.Password == oldPassword)
                        {
                            siteUser.Password = newPassword;
                           // result = siteUser.Save();
                        }
                    }

            if (result)
            {
                //siteUser.UpdateLastPasswordChangeTime();
            }

            return result;
        }
 /// <summary>
 /// Create a new SiteUser object.
 /// </summary>
 /// <param name="userID">Initial value of UserID.</param>
 /// <param name="userName">Initial value of UserName.</param>
 /// <param name="password">Initial value of Password.</param>
 /// <param name="eMail">Initial value of EMail.</param>
 /// <param name="invitesCount">Initial value of InvitesCount.</param>
 public static SiteUser CreateSiteUser(int userID, string userName, string password, string eMail, int invitesCount)
 {
     SiteUser siteUser = new SiteUser();
     siteUser.UserID = userID;
     siteUser.UserName = userName;
     siteUser.Password = password;
     siteUser.EMail = eMail;
     siteUser.InvitesCount = invitesCount;
     return siteUser;
 }
示例#11
0
        public async Task <IActionResult> ExternalLoginConfirmation(ExternalLoginConfirmationViewModel model, string returnUrl)
        {
            log.LogDebug("ExternalLoginConfirmation called with returnurl " + returnUrl);

            if (signInManager.IsSignedIn(User))
            {
                return(RedirectToAction("Index", "Manage"));
            }

            if (ModelState.IsValid)
            {
                // Get the information about the user from the external login provider
                var info = await signInManager.GetExternalLoginInfoAsync();

                if (info == null)
                {
                    return(View("ExternalLoginFailure"));
                }
                var user = new SiteUser {
                    SiteId   = Site.Id,
                    UserName = model.Email,
                    Email    = model.Email
                };
                var result = await userManager.CreateAsync(user);

                if (result.Succeeded)
                {
                    log.LogDebug("ExternalLoginConfirmation user created ");

                    await ipAddressTracker.TackUserIpAddress(Site.Id, user.Id);

                    result = await userManager.AddLoginAsync(user, info);

                    if (result.Succeeded)
                    {
                        log.LogDebug("ExternalLoginConfirmation AddLoginAsync succeeded ");

                        await signInManager.SignInAsync(user, isPersistent : false);

                        if (!string.IsNullOrEmpty(returnUrl))
                        {
                            return(LocalRedirect(returnUrl));
                        }

                        return(this.RedirectToSiteRoot(Site));
                    }
                    else
                    {
                        log.LogDebug("ExternalLoginConfirmation AddLoginAsync failed ");
                    }
                }
                else
                {
                    log.LogDebug("ExternalLoginConfirmation failed to user created ");
                }

                AddErrors(result);
            }
            else
            {
                log.LogDebug("ExternalLoginConfirmation called with ModelStateInvalid ");
            }

            ViewData["ReturnUrl"] = returnUrl;
            return(View(model));
        }
        private void LoadSettings()
        {
            pageId                = WebUtils.ParseInt32FromQueryString("pageid", -1);
            moduleId              = WebUtils.ParseInt32FromQueryString("mid", -1);
            cacheDependencyKey    = "Module-" + moduleId.ToString();
            iconPath              = ImageSiteRoot + "/Data/SiteImages/FeatureIcons/";
            skinBaseUrl           = SiteUtils.GetSkinBaseUrl(this);
            isSiteEditor          = SiteUtils.UserIsSiteEditor();
            lnkCancel.NavigateUrl = SiteUtils.GetCurrentPageUrl();


            if ((WebUser.IsAdminOrContentAdmin) || (isSiteEditor))
            {
                canEdit = true;
                isAdmin = true;
                lnkEditContent.Visible     = true;
                lnkEditContent.Text        = Resource.ContentManagerViewEditContentLabel;
                lnkEditContent.NavigateUrl = SiteRoot
                                             + "/Admin/ContentManagerPreview.aspx?mid=" + this.moduleId.ToString(CultureInfo.InvariantCulture);

                lnkPublishing.Visible     = true;
                lnkPublishing.Text        = Resource.ContentManagerPublishingContentLink;
                lnkPublishing.NavigateUrl = SiteRoot
                                            + "/Admin/ContentManager.aspx?mid=" + this.moduleId.ToString(CultureInfo.InvariantCulture);
            }
            else
            {
                bool hideOtherTabs = WebConfigSettings.HideModuleSettingsGeneralAndSecurityTabsFromNonAdmins;
                if (hideOtherTabs)
                {
                    liGeneralSettings.Visible  = false;
                    liSecurity.Visible         = false;
                    tabGeneralSettings.Visible = false;
                    tabSecurity.Visible        = false;
                }
            }



            divCacheTimeout.Visible   = !WebConfigSettings.DisableContentCache;
            pnlDraftEditRoles.Visible = (WebConfigSettings.EnableContentWorkflow && siteSettings.EnableContentWorkflow);

            if (pageId > -1)
            {
                this.divParentPage.Visible = true;
                module = new Module(this.moduleId, pageId);
            }
            else
            {
                module = new Module(this.moduleId);
            }

            if (!canEdit)
            {
                if (
                    (WebUser.IsInRoles(module.AuthorizedEditRoles)) ||
                    (WebUser.IsInRoles(module.DraftEditRoles)) ||
                    (WebUser.IsInRoles(CurrentPage.EditRoles)) ||
                    (WebUser.IsInRoles(CurrentPage.DraftEditOnlyRoles))
                    )
                {
                    canEdit = true;
                }
            }

            if (!canEdit)
            {
                if (module.EditUserId > 0)
                {
                    SiteUser siteUser = SiteUtils.GetCurrentSiteUser();
                    if (module.EditUserId == siteUser.UserId)
                    {
                        canEdit = true;
                    }
                }
            }

            if (module.SiteGuid != siteSettings.SiteGuid)
            {
                canEdit = false;
            }

            if (canEdit && (!isAdmin) && (WebUser.IsInRoles(siteSettings.RolesNotAllowedToEditModuleSettings)))
            {
                canEdit = false;
            }
        }
示例#13
0
        public void InstallContent(Module module, string configInfo)
        {
            if (string.IsNullOrEmpty(configInfo))
            {
                return;
            }

            int userId = SiteUser.GetNewestUserId(module.SiteId);

            XmlDocument xml = new XmlDocument();

            using (StreamReader stream = File.OpenText(HostingEnvironment.MapPath(configInfo)))
            {
                xml.LoadXml(stream.ReadToEnd());
            }

            foreach (XmlNode node in xml.DocumentElement.ChildNodes)
            {
                if (node.Name == "forum")
                {
                    Forum forum = new Forum();
                    forum.ModuleId = module.ModuleId;


                    XmlAttributeCollection attributeCollection = node.Attributes;

                    if (attributeCollection["title"] != null)
                    {
                        forum.Title = attributeCollection["title"].Value;
                    }

                    if (attributeCollection["sortOrder"] != null)
                    {
                        int sort = 1;
                        if (int.TryParse(attributeCollection["sortOrder"].Value,
                                         out sort))
                        {
                            forum.SortOrder = sort;
                        }
                    }

                    foreach (XmlNode descriptionNode in node.ChildNodes)
                    {
                        if (descriptionNode.Name == "description")
                        {
                            forum.Description = descriptionNode.InnerText;
                            break;
                        }
                    }

                    forum.CreatedByUserId = userId;

                    forum.Save();

                    foreach (XmlNode threadsNode in node.ChildNodes)
                    {
                        if (threadsNode.Name == "threads")
                        {
                            foreach (XmlNode threadNode in threadsNode.ChildNodes)
                            {
                                if (threadNode.Name == "thread")
                                {
                                    XmlAttributeCollection threadAttributes = threadNode.Attributes;

                                    ForumThread thread = new ForumThread();
                                    thread.ForumId    = forum.ItemId;
                                    thread.PostUserId = userId;

                                    if (threadAttributes["subject"] != null)
                                    {
                                        thread.PostSubject = threadAttributes["subject"].Value;
                                    }

                                    foreach (XmlNode postNode in threadNode.ChildNodes)
                                    {
                                        if (postNode.Name == "post")
                                        {
                                            thread.PostMessage = postNode.InnerText;
                                            break; //TODO: this is limited to one post when creating a thread. could support more but just making it for the demo site
                                        }
                                    }

                                    thread.Post();
                                }
                            }

                            break; //there should only be one threads node
                        }
                    }
                }
            }
        }
示例#14
0
 /// <summary>
 /// required implementation
 /// </summary>
 /// <param name="userNames">a list of usernames</param>
 /// <param name="roleNames">a list of roles</param>
 public override void RemoveUsersFromRoles(string[] userNames, string[] roleNames)
 {
     if ((userNames != null) && (roleNames != null))
     {
         foreach (String userName in userNames)
         {
             SiteUser siteUser = new SiteUser(userName);
             if (siteUser.UserId != Guid.Empty)
             {
                 //foreach (String roleName in roleNames)
                 //{
                 //    Role role = new Role(roleName);
                 //    if (role.RoleId != Guid.Empty)
                 //    {
                 //        Role.RemoveUser(role.RoleId, siteUser.UserId);
                 //    }
                 //}
             }
         }
     }
 }
示例#15
0
    private void CreateNewProfile()
    {
        SiteUser user = new SiteUser();
        user.SerialKey = txtSerialKey.Text.Trim();
        user.FirstName = txtFirstName.Text.Trim();
        user.MiddleName = txtMiddleName.Text.Trim();
        user.LastName = txtLastName.Text.Trim();
        user.Email = txtEmail.Text.Trim();
        user.IsResident = String.Compare(ddlIsResident.SelectedValue, "1", false) == 0 ? true : false;
        if (user.IsResident)
            user.ResidencyYear = Convert.ToInt32(ddlResidency.SelectedValue);

        user.IsActive = false;
        user.ActivationKey = Guid.NewGuid().ToString();

        _UserManager.Save(user);
        //AppUtil.ShowMessage(divMessageBox, "Congratulations"
        SendEmailNotification(user);
        ShowConfirmationMessage();
    }
示例#16
0
        private void DoRender(HtmlTextWriter writer)
        {
            if (!HttpContext.Current.Request.IsAuthenticated)
            {
                return;
            }

            SiteUser siteUser = SiteUtils.GetCurrentSiteUser();

            if ((siteUser == null) || (siteUser.UserId <= -1))
            {
                return;
            }

            if (CssClass.Length == 0)
            {
                CssClass = "sitelink";
            }

            if (renderAsListItem)
            {
                writer.Write("<li class='" + listItemCSS + "'>");
            }

            if ((useFirstLast) && (siteUser.FirstName.Length > 0) && (siteUser.LastName.Length > 0))
            {
                if (firstLastFormat.Length == 0)
                {
                    firstLastFormat = Resource.FirstLastFormat;
                }

                if (wrapInProfileLink)
                {
                    writer.Write("<a class='" + CssClass + "' href='" + SiteUtils.GetNavigationSiteRoot() + "/Secure/UserProfile.aspx" + "'>" + string.Format(firstLastFormat,
                                                                                                                                                              HttpUtility.HtmlEncode(siteUser.FirstName), HttpUtility.HtmlEncode(siteUser.LastName)) + "</a>");
                }
                else if (wrapInAnchor)
                {
                    writer.Write("<a class='" + CssClass + "' name='welcome'>" + string.Format(firstLastFormat,
                                                                                               HttpUtility.HtmlEncode(siteUser.FirstName), HttpUtility.HtmlEncode(siteUser.LastName)) + "</a>");
                }
                else
                {
                    writer.Write("<span class='" + CssClass + "'>" + string.Format(firstLastFormat,
                                                                                   HttpUtility.HtmlEncode(siteUser.FirstName), HttpUtility.HtmlEncode(siteUser.LastName)) + "</span>");
                }
            }
            else
            {
                string format = Resource.WelcomeMessageFormat;

                if (overrideFormat.Length > 0)
                {
                    format = overrideFormat;
                }

                if (wrapInProfileLink)
                {
                    writer.Write("<a class='" + CssClass + "' href='" + SiteUtils.GetNavigationSiteRoot() + "/Secure/UserProfile.aspx" + "'>" + string.Format(format, HttpUtility.HtmlEncode(siteUser.Name)) + "</a>");
                }
                else if (wrapInAnchor)
                {
                    writer.Write("<a class='" + CssClass + "' name='welcome'>" + string.Format(format, HttpUtility.HtmlEncode(siteUser.Name)) + "</a>");
                }
                else
                {
                    writer.Write("<span class='" + CssClass + "'>" + string.Format(format, HttpUtility.HtmlEncode(siteUser.Name)) + "</span>");
                }
            }

            if (UseRightSeparator)
            {
                writer.Write(" <span class='Accent'>|</span>");
            }

            if (renderAsListItem)
            {
                writer.Write("</li>");
            }
        }
示例#17
0
        public virtual async Task <UserLoginResult> TryRegister(
            RegisterViewModel model,
            ModelStateDictionary modelState,
            HttpContext httpContext,
            IHandleCustomRegistration customRegistration
            )
        {
            var          template    = new LoginResultTemplate();
            IUserContext userContext = null;

            var userName = !string.IsNullOrWhiteSpace(model.Username) ? model.Username : await _userManager.SuggestLoginNameFromEmail(_userManager.Site.Id, model.Email);

            var userNameAvailable = await _userManager.LoginIsAvailable(Guid.Empty, userName);

            if (!userNameAvailable)
            {
                userName = await _userManager.SuggestLoginNameFromEmail(_userManager.Site.Id, model.Email);
            }

            var user = new SiteUser
            {
                SiteId          = _userManager.Site.Id,
                UserName        = userName,
                Email           = model.Email,
                FirstName       = model.FirstName,
                LastName        = model.LastName,
                DisplayName     = model.DisplayName,
                LastLoginUtc    = DateTime.UtcNow,
                AccountApproved = _userManager.Site.RequireApprovalBeforeLogin ? false : true
            };

            await customRegistration.ProcessUserBeforeCreate(user, httpContext);


            if (model.DateOfBirth.HasValue)
            {
                user.DateOfBirth = model.DateOfBirth.Value;
            }

            if (!string.IsNullOrWhiteSpace(_userManager.Site.RegistrationAgreement))
            {
                if (model.AgreeToTerms)
                {
                    user.AgreementAcceptedUtc = DateTime.UtcNow;
                }
            }

            var result = await _userManager.CreateAsync(user, model.Password);

            if (result.Succeeded)
            {
                template.User = user;
                template.IsNewUserRegistration = true;
                await _loginRulesProcessor.ProcessAccountLoginRules(template);
            }
            else
            {
                foreach (var error in result.Errors)
                {
                    modelState.AddModelError(string.Empty, error.Description);
                }
            }


            if (template.RejectReasons.Count == 0 &&
                user != null &&
                template.SignInResult == SignInResult.Failed && // failed is initial state, could have been changed to lockedout
                result.Errors.Count <IdentityError>() == 0
                )
            {
                await _signInManager.SignInAsync(user, isPersistent : false);

                template.SignInResult = SignInResult.Success;
            }

            if (template.User != null)
            {
                userContext = new UserContext(template.User);
            }

            return(new UserLoginResult(
                       template.SignInResult,
                       template.RejectReasons,
                       userContext,
                       template.IsNewUserRegistration,
                       template.MustAcceptTerms,
                       template.NeedsAccountApproval,
                       template.NeedsEmailConfirmation,
                       template.EmailConfirmationToken,
                       template.NeedsPhoneConfirmation
                       ));
        }
        private void PopulateControls()
        {
            if (module.ModuleId > -1)
            {
                ModuleDefinition moduleDefinition = new ModuleDefinition(module.ModuleDefId);
                lblFeatureName.Text
                    = ResourceHelper.GetResourceString(
                          moduleDefinition.ResourceFile,
                          moduleDefinition.FeatureName);

                litFeatureSpecificSettingsTab.Text = string.Format(CultureInfo.InvariantCulture, Resource.FeatureSettingsTabFormat, lblFeatureName.Text);

                divCacheTimeout.Visible = (!WebConfigSettings.DisableContentCache && moduleDefinition.IsCacheable);

                PopulatePageList();

                moduleTitle.Text                          = this.module.ModuleTitle;
                cacheTime.Text                            = this.module.CacheTime.ToString();
                chkShowTitle.Checked                      = this.module.ShowTitle;
                chkHideFromAuth.Checked                   = this.module.HideFromAuthenticated;
                chkHideFromUnauth.Checked                 = this.module.HideFromUnauthenticated;
                chkAvailableForMyPage.Checked             = this.module.AvailableForMyPage;
                chkAllowMultipleInstancesOnMyPage.Checked = this.module.AllowMultipleInstancesOnMyPage;
                if (this.isAdmin)
                {
                    divEditUser.Visible = true;

                    if (module.EditUserId > 0)
                    {
                        SiteUser siteUser = new SiteUser(this.siteSettings, module.EditUserId);
                        this.scUser.Text  = siteUser.Name;
                        this.scUser.Value = siteUser.UserId.ToString();
                    }
                }

                if (this.divParentPage.Visible)
                {
                    ListItem listItem = ddPages.Items.FindByValue(this.module.PageId.ToString());
                    if (listItem != null)
                    {
                        ddPages.ClearSelection();
                        listItem.Selected = true;
                    }
                }


                if (module.Icon.Length > 0)
                {
                    ddIcons.SelectedValue = module.Icon;
                    imgIcon.Src           = ImageSiteRoot + "/Data/SiteImages/FeatureIcons/" + module.Icon;
                }
                else
                {
                    imgIcon.Src = ImageSiteRoot + "/Data/SiteImages/FeatureIcons/blank.gif";
                }

                foreach (ListItem item in cblViewRoles.Items)
                {
                    if ((this.module.ViewRoles.LastIndexOf(item.Value + ";")) > -1)
                    {
                        item.Selected = true;
                    }
                }

                foreach (ListItem item in authEditRoles.Items)
                {
                    if ((this.module.AuthorizedEditRoles.LastIndexOf(item.Value + ";")) > -1)
                    {
                        item.Selected = true;
                    }
                }

                foreach (ListItem item in draftEditRoles.Items)
                {
                    if ((this.module.DraftEditRoles.LastIndexOf(item.Value + ";")) > -1)
                    {
                        item.Selected = true;
                    }
                }

                cblViewRoles.Enabled  = isAdmin;
                authEditRoles.Enabled = isAdmin;
            }
        }
示例#19
0
        private void LoadSettings(HttpContext context)
        {
            siteSettings = CacheHelper.GetCurrentSiteSettings();
            if (siteSettings == null)
            {
                return;
            }

            //this is only used to resolve the paths since httphandler does not have it built in

            page.AppRelativeVirtualPath = context.Request.AppRelativeCurrentExecutionFilePath;

            FileSystemProvider p = FileSystemManager.Providers[WebConfigSettings.FileSystemProvider];

            if (p == null)
            {
                log.Error("Could not load file system provider " + WebConfigSettings.FileSystemProvider);
                return;
            }

            fileSystem = p.GetFileSystem();
            if (fileSystem == null)
            {
                log.Error("Could not load file system from provider " + WebConfigSettings.FileSystemProvider);
                return;
            }

            rootDir = fileSystem.VirtualRoot.Replace("~", string.Empty);

            if ((WebUser.IsAdminOrContentAdmin) || (SiteUtils.UserIsSiteEditor()))
            {
                allowedExtensions = WebConfigSettings.AllowedUploadFileExtensions;
                canView           = true;
            }
            else if (WebUser.IsInRoles(siteSettings.GeneralBrowseAndUploadRoles))
            {
                allowedExtensions = WebConfigSettings.AllowedUploadFileExtensions;
                canView           = true;
            }
            else if (WebUser.IsInRoles(siteSettings.UserFilesBrowseAndUploadRoles))
            {
                currentUser = SiteUtils.GetCurrentSiteUser();
                if (currentUser == null)
                {
                    return;
                }
                allowedExtensions = WebConfigSettings.AllowedLessPriveledgedUserUploadFileExtensions;
                canView           = true;
            }

            if (!canView)
            {
                return;
            }

            currentDir = rootDir;

            if (context.Request.Params.Get("dir") != null)
            {
                string requestedDir = context.Server.UrlDecode(context.Request.Params.Get("dir"));

                if (requestedDir == "/Pages/")
                {
                    currentDir = requestedDir;
                }
                else
                {
                    if (IsChildDirectory(context, requestedDir))
                    {
                        currentDir = requestedDir;;
                    }
                }
            }

            ResolveType(context);
        }
示例#20
0
        private void CreateUser(string windowsLiveId)
        {
            SiteUser newUser = new SiteUser(siteSettings);

            newUser.WindowsLiveId = windowsLiveId;
            newUser.Name          = SecurityHelper.RemoveMarkup(txtUserName.Text);
            newUser.LoginName     = newUser.Name;
            newUser.Email         = txtEmail.Text;
            mojoMembershipProvider mojoMembership = (mojoMembershipProvider)Membership.Provider;

            newUser.Password = mojoMembership.EncodePassword(siteSettings, newUser, SiteUser.CreateRandomPassword(7, WebConfigSettings.PasswordGeneratorChars));
            //newUser.Password = SiteUser.CreateRandomPassword(7);
            newUser.PasswordQuestion = Resource.ManageUsersDefaultSecurityQuestion;
            newUser.PasswordAnswer   = Resource.ManageUsersDefaultSecurityAnswer;
            newUser.Save();
            if (siteSettings.UseSecureRegistration)
            {
                newUser.SetRegistrationConfirmationGuid(Guid.NewGuid());
            }

            mojoProfileConfiguration profileConfig
                = mojoProfileConfiguration.GetConfig();

            // set default values first
            foreach (mojoProfilePropertyDefinition propertyDefinition in profileConfig.PropertyDefinitions)
            {
#if !MONO
                // we are using the new TimeZoneInfo list but it doesn't work under Mono
                // this makes us skip the TimeOffsetHours setting from mojoProfile.config which is not used under windows
                if (propertyDefinition.Name == mojoProfilePropertyDefinition.TimeOffsetHoursKey)
                {
                    continue;
                }
#endif
                mojoProfilePropertyDefinition.SavePropertyDefault(
                    newUser, propertyDefinition);
            }

            foreach (mojoProfilePropertyDefinition propertyDefinition in profileConfig.PropertyDefinitions)
            {
#if !MONO
                // we are using the new TimeZoneInfo list but it doesn't work under Mono
                // this makes us skip the TimeOffsetHours setting from mojoProfile.config which is not used under windows
                if (propertyDefinition.Name == mojoProfilePropertyDefinition.TimeOffsetHoursKey)
                {
                    continue;
                }
#endif
                if ((propertyDefinition.RequiredForRegistration) || (propertyDefinition.ShowOnRegistration))
                {
                    mojoProfilePropertyDefinition.SaveProperty(
                        newUser,
                        pnlRequiredProfileProperties,
                        propertyDefinition,
                        timeOffset,
                        timeZone);
                }
            }

            // track user ip address
            UserLocation userLocation = new UserLocation(newUser.UserGuid, SiteUtils.GetIP4Address());
            userLocation.SiteGuid = siteSettings.SiteGuid;
            userLocation.Hostname = Page.Request.UserHostName;
            userLocation.Save();

            UserRegisteredEventArgs u = new UserRegisteredEventArgs(newUser);
            OnUserRegistered(u);

            CacheHelper.ClearMembershipStatisticsCache();

            NewsletterHelper.ClaimExistingSubscriptions(newUser);

            DoUserLogin(newUser);
        }
 private PickerEntity GetPickerEntity(SiteUser user) {
     PickerEntity entity = CreatePickerEntity();
     entity.Claim = new SPClaim(SiteClaimType, user.LoginName, SiteClaimValueType,
             SPOriginalIssuers.Format(SPOriginalIssuerType.TrustedProvider, ProviderDisplayName));
     entity.Description = user.DisplayName;
     entity.DisplayText = user.DisplayName;
     entity.EntityData[PeopleEditorEntityDataKeys.AccountName] = user.LoginName;
     entity.EntityData[PeopleEditorEntityDataKeys.DisplayName] = user.DisplayName;
     entity.EntityType = SPClaimEntityTypes.User;
     entity.IsResolved = true;
     return entity;
 }        
示例#22
0
        public static void SaveProperty(
            SiteUser siteUser,
            Panel parentControl,
            mojoProfilePropertyDefinition propertyDefinition,
            Double legacyTimeZoneOffset,
            TimeZoneInfo timeZone)
        {
            String  controlID;
            Control control;

            if (propertyDefinition.ISettingControlSrc.Length > 0)
            {
                controlID = "isc" + propertyDefinition.Name;
                control   = parentControl.FindControl(controlID);
                if (control != null)
                {
                    siteUser.SetProperty(
                        propertyDefinition.Name,
                        ((ISettingControl)control).GetValue(),
                        propertyDefinition.SerializeAs,
                        propertyDefinition.LazyLoad);
                }
            }
            else
            {
                switch (propertyDefinition.Type)
                {
                case "System.Boolean":

                    controlID = "chk" + propertyDefinition.Name;
                    control   = parentControl.FindControl(controlID);
                    if (control != null)
                    {
                        siteUser.SetProperty(
                            propertyDefinition.Name,
                            ((CheckBox)control).Checked,
                            propertyDefinition.SerializeAs,
                            propertyDefinition.LazyLoad);
                    }

                    break;

                case "System.DateTime":

                    controlID = "dp" + propertyDefinition.Name;
                    control   = parentControl.FindControl(controlID);
                    if (control != null)
                    {
                        DatePickerControl dp = (DatePickerControl)control;
                        if (dp.Text.Length > 0)
                        {
                            DateTime dt;
                            if (DateTime.TryParse(
                                    dp.Text,
                                    CultureInfo.CurrentCulture,
                                    DateTimeStyles.AdjustToUniversal, out dt))
                            {
                                if (propertyDefinition.IncludeTimeForDate)
                                {
                                    if (timeZone != null)
                                    {
                                        dt = dt.ToUtc(timeZone);
                                    }
                                    else
                                    {
                                        dt = dt.AddHours(-legacyTimeZoneOffset);
                                    }

                                    if (propertyDefinition.Name == "DateOfBirth")
                                    {
                                        siteUser.DateOfBirth = dt.Date;
                                        siteUser.Save();
                                    }
                                    else
                                    {
                                        siteUser.SetProperty(
                                            propertyDefinition.Name,
                                            dt.ToString(),
                                            propertyDefinition.SerializeAs,
                                            propertyDefinition.LazyLoad);
                                    }
                                }
                                else
                                {
                                    if (propertyDefinition.Name == "DateOfBirth")
                                    {
                                        siteUser.DateOfBirth = dt.Date;
                                        siteUser.Save();
                                    }
                                    else
                                    {
                                        siteUser.SetProperty(
                                            propertyDefinition.Name,
                                            dt.Date.ToShortDateString(),
                                            propertyDefinition.SerializeAs,
                                            propertyDefinition.LazyLoad);
                                    }
                                }
                            }
                            else
                            {
                                siteUser.SetProperty(
                                    propertyDefinition.Name,
                                    dp.Text,
                                    propertyDefinition.SerializeAs,
                                    propertyDefinition.LazyLoad);
                            }
                        }
                        else     // blank
                        {
                            if (propertyDefinition.Name == "DateOfBirth")
                            {
                                siteUser.DateOfBirth = DateTime.MinValue;
                                siteUser.Save();
                            }
                            else
                            {
                                siteUser.SetProperty(
                                    propertyDefinition.Name,
                                    String.Empty,
                                    propertyDefinition.SerializeAs,
                                    propertyDefinition.LazyLoad);
                            }
                        }
                    }

                    break;

                case "System.String":
                default:

                    if (propertyDefinition.OptionList.Count > 0)
                    {
                        if (propertyDefinition.Type == "CheckboxList")
                        {
                            controlID = "cbl" + propertyDefinition.Name;
                            control   = parentControl.FindControl(controlID);
                            if (control != null)
                            {
                                if (control is CheckBoxList)
                                {
                                    CheckBoxList cbl = (CheckBoxList)control;

                                    siteUser.SetProperty(
                                        propertyDefinition.Name,
                                        cbl.Items.SelectedItemsToCommaSeparatedString(),
                                        propertyDefinition.SerializeAs,
                                        propertyDefinition.LazyLoad);
                                }
                            }
                        }
                        else
                        {
                            controlID = "dd" + propertyDefinition.Name;
                            control   = parentControl.FindControl(controlID);
                            if (control != null)
                            {
                                if (control is DropDownList)
                                {
                                    DropDownList dd = (DropDownList)control;
                                    if (dd.SelectedIndex > -1)
                                    {
                                        siteUser.SetProperty(
                                            propertyDefinition.Name,
                                            dd.SelectedValue,
                                            propertyDefinition.SerializeAs,
                                            propertyDefinition.LazyLoad);
                                    }
                                }
                            }
                        }
                    }
                    else
                    {
                        controlID = "txt" + propertyDefinition.Name;
                        control   = parentControl.FindControl(controlID);
                        if (control != null)
                        {
                            siteUser.SetProperty(
                                propertyDefinition.Name,
                                ((TextBox)control).Text,
                                propertyDefinition.SerializeAs,
                                propertyDefinition.LazyLoad);
                        }
                    }

                    break;
                }
            }
        }
示例#23
0
        public static SiteUser GetCurrentUser(bool bypassAuthCheck)
        {
            if (HttpContext.Current == null)
                return null;

            if (bypassAuthCheck || (HttpContext.Current.Request.IsAuthenticated))
            {
                if (HttpContext.Current.Items["CurrentUser"] != null)
                {
                    try
                    {
                        return (SiteUser)HttpContext.Current.Items["CurrentUser"];
                    }
                    catch
                    {
                    }
                }
                IUserBAL itemBAl = new UserBAL();
                User item = itemBAl.GetUserByLoginName(HttpContext.Current.User.Identity.Name.Trim());
                SiteUser siteUser = new SiteUser();
                siteUser.UserId = item.UserGuid;
                siteUser.Name = item.UserName;
                siteUser.LoginName = item.UserID;

                if (siteUser.UserId != Guid.Empty)
                {
                    HttpContext.Current.Items["CurrentUser"] = siteUser.ToString();

                    return siteUser;
                }
            }

            return null;
        }
示例#24
0
        /// <summary>
        /// this overload is preferred because it checks if the module represents an instance of the feature
        /// </summary>
        /// <param name="moduleId"></param>
        /// <param name="featureGuid"></param>
        /// <returns></returns>
        public bool UserCanEditModule(int moduleId, Guid featureGuid)
        {
            if (!Request.IsAuthenticated)
            {
                return(false);
            }

            if (WebUser.IsAdminOrContentAdmin)
            {
                return(true);
            }

            if (SiteUtils.UserIsSiteEditor())
            {
                return(true);
            }

            if (CurrentPage == null)
            {
                return(false);
            }

            bool moduleFoundOnPage = false;

            foreach (Module m in CurrentPage.Modules)
            {
                if (
                    (m.ModuleId == moduleId) &&
                    ((featureGuid == Guid.Empty) || (m.FeatureGuid == featureGuid))
                    )
                {
                    moduleFoundOnPage = true;
                }
            }

            if (!moduleFoundOnPage)
            {
                return(false);
            }

            if (WebUser.IsInRoles(CurrentPage.EditRoles))
            {
                return(true);
            }

            SiteUser currentUser = SiteUtils.GetCurrentSiteUser();

            if (currentUser == null)
            {
                return(false);
            }

            foreach (Module m in CurrentPage.Modules)
            {
                if (m.ModuleId == moduleId)
                {
                    if (m.EditUserId == currentUser.UserId)
                    {
                        return(true);
                    }
                    if (WebUser.IsInRoles(m.AuthorizedEditRoles))
                    {
                        return(true);
                    }
                }
            }

            return(false);
        }
        public override bool DeleteUser(string userName, bool deleteAllRelatedData)
        {
            /*
                                     * 	Takes, as input, a user name and deletes that user from the membership data source. DeleteUser returns
                                     * true if the user was successfully deleted. Otherwise, it returns false. DeleteUser takes a third parameter-a Boolean
                                     * named deleteAllRelatedData-that specifies whether related data for that user should be deleted also.
                                     * If deleteAllRelatedData is true, DeleteUser should delete role data, profile data, and all other data associated
                                     * with that user.
                                     */
            bool result = false;
            // we are ignoring deleteAllRelatedData
            // on purpose because whether to really delete or just flag as deleted
            // is determined by the siteSettings.ReallyDeleteUsers setting

            if (userName != null)
            {
                SiteUser siteUser = new SiteUser(userName);
                if (siteUser.UserId != Guid.Empty)
                {
                    // just check IsDeleted = true
                    //result = SiteUser.Delete(siteUser.UserId);
                }
            }

            return result;
        }
示例#26
0
        public bool UserCanOnlyEditModuleAsDraft(int moduleId, Guid featureGuid)
        {
            if (!Request.IsAuthenticated)
            {
                return(false);
            }

            if (WebUser.IsAdminOrContentAdmin)
            {
                return(false);
            }

            if (SiteUtils.UserIsSiteEditor())
            {
                return(false);
            }

            if (!WebConfigSettings.EnableContentWorkflow)
            {
                return(false);
            }
            if (CurrentSite == null)
            {
                return(false);
            }
            if (!CurrentSite.EnableContentWorkflow)
            {
                return(false);
            }

            if (CurrentPage == null)
            {
                return(false);
            }

            bool moduleFoundOnPage = false;

            foreach (Module m in CurrentPage.Modules)
            {
                if (
                    (m.ModuleId == moduleId) &&
                    ((featureGuid == Guid.Empty) || (m.FeatureGuid == featureGuid))
                    )
                {
                    moduleFoundOnPage = true;
                }
            }

            if (!moduleFoundOnPage)
            {
                return(false);
            }

            if (WebUser.IsInRoles(CurrentPage.DraftEditOnlyRoles))
            {
                return(true);
            }

            SiteUser currentUser = SiteUtils.GetCurrentSiteUser();

            if (currentUser == null)
            {
                return(false);
            }

            foreach (Module m in CurrentPage.Modules)
            {
                if (m.ModuleId == moduleId)
                {
                    if (WebUser.IsInRoles(m.DraftEditRoles))
                    {
                        return(true);
                    }
                }
            }

            return(false);
        }
 public ProfileUpdatedEventArgs(SiteUser siteUser, bool updatedByAdmin)
 {
     _siteUser = siteUser;
     _updatedByAdmin = updatedByAdmin;
 }
        public void InstallContent(Module module, string configInfo)
        {
            if (string.IsNullOrEmpty(configInfo))
            {
                return;
            }

            SiteSettings siteSettings = new SiteSettings(module.SiteId);
            SiteUser     admin        = SiteUser.GetNewestUser(siteSettings);

            XmlDocument xml = new XmlDocument();

            using (StreamReader stream = File.OpenText(HostingEnvironment.MapPath(configInfo)))
            {
                xml.LoadXml(stream.ReadToEnd());
            }

            foreach (XmlNode node in xml.DocumentElement.ChildNodes)
            {
                if (node.Name == "feed")
                {
                    XmlAttributeCollection feedAttributes = node.Attributes;

                    RssFeed feed = new RssFeed(module.ModuleId);

                    feed.ModuleId   = module.ModuleId;
                    feed.ModuleGuid = module.ModuleGuid;

                    if (admin != null)
                    {
                        feed.UserId          = admin.UserId;
                        feed.UserGuid        = admin.UserGuid;
                        feed.LastModUserGuid = admin.UserGuid;
                    }

                    if (feedAttributes["feedName"] != null)
                    {
                        feed.Author = feedAttributes["feedName"].Value;
                    }

                    if (feedAttributes["webUrl"] != null)
                    {
                        feed.Url = feedAttributes["webUrl"].Value;
                    }


                    if (feedAttributes["feedUrl"] != null)
                    {
                        feed.RssUrl = feedAttributes["feedUrl"].Value;
                    }

                    if (feedAttributes["sortRank"] != null)
                    {
                        int sort = 500;
                        if (int.TryParse(feedAttributes["sortRank"].Value,
                                         out sort))
                        {
                            feed.SortRank = sort;
                        }
                    }

                    feed.Save();
                }

                if (node.Name == "moduleSetting")
                {
                    XmlAttributeCollection settingAttributes = node.Attributes;

                    if ((settingAttributes["settingKey"] != null) && (settingAttributes["settingKey"].Value.Length > 0))
                    {
                        string key = settingAttributes["settingKey"].Value;
                        string val = string.Empty;
                        if (settingAttributes["settingValue"] != null)
                        {
                            val = settingAttributes["settingValue"].Value;
                        }

                        ModuleSettings.UpdateModuleSetting(module.ModuleGuid, module.ModuleId, key, val);
                    }
                }
            }
        }
示例#29
0
        void btnUpload_Click(object sender, EventArgs e)
        {
            // as long as javascript is available this code should never execute
            // because the standard file input ir replaced by javascript and the file upload happens
            // at the service url /ImageGallery/upload.ashx
            // this is fallback implementation

            Module module = GetModule(moduleId, Gallery.FeatureGuid);

            if (module == null)
            {
                SiteUtils.RedirectToAccessDeniedPage(this);
                return;
            }

            SiteUser siteUser = SiteUtils.GetCurrentSiteUser();

            try
            {
                if (uploader.HasFile)
                {
                    string ext = Path.GetExtension(uploader.FileName);
                    if (SiteUtils.IsAllowedUploadBrowseFile(ext, ".jpg|.gif|.png|.jpeg"))
                    {
                        GalleryImage galleryImage = new GalleryImage(this.moduleId);
                        galleryImage.ModuleGuid      = module.ModuleGuid;
                        galleryImage.WebImageHeight  = config.WebSizeHeight;
                        galleryImage.WebImageWidth   = config.WebSizeWidth;
                        galleryImage.ThumbNailHeight = config.ThumbnailHeight;
                        galleryImage.ThumbNailWidth  = config.ThumbnailWidth;
                        galleryImage.UploadUser      = Context.User.Identity.Name;

                        if (siteUser != null)
                        {
                            galleryImage.UserGuid = siteUser.UserGuid;
                        }

                        //string newFileName = Path.GetFileName(file.FileName).ToCleanFileName(WebConfigSettings.ForceLowerCaseForUploadedFiles);
                        string newFileName  = Path.GetFileName(uploader.FileName).ToCleanFileName(WebConfigSettings.ForceLowerCaseForUploadedFiles);
                        string newImagePath = VirtualPathUtility.Combine(fullSizeImageFolderPath, newFileName);

                        if (galleryImage.ImageFile == newFileName)
                        {
                            // an existing gallery image delete the old one
                            fileSystem.DeleteFile(newImagePath);
                        }
                        else
                        {
                            // this is a new galleryImage instance, make sure we don't use the same file name as any other instance
                            int i = 1;
                            while (fileSystem.FileExists(VirtualPathUtility.Combine(fullSizeImageFolderPath, newFileName)))
                            {
                                newFileName = i.ToInvariantString() + newFileName;
                                i          += 1;
                            }
                        }

                        newImagePath = VirtualPathUtility.Combine(fullSizeImageFolderPath, newFileName);


                        using (Stream s = uploader.FileContent)
                        {
                            //fileSystem.SaveFile(newImagePath, s, uploader.FileContentType, true);
                            fileSystem.SaveFile(newImagePath, s, IOHelper.GetMimeType(Path.GetExtension(ext).ToLower()), true);
                        }


                        galleryImage.ImageFile     = newFileName;
                        galleryImage.WebImageFile  = newFileName;
                        galleryImage.ThumbnailFile = newFileName;
                        galleryImage.Save();
                        GalleryHelper.ProcessImage(galleryImage, fileSystem, imageFolderPath, uploader.FileName, config.ResizeBackgroundColor);
                    }
                }

                WebUtils.SetupRedirect(this, SiteUtils.GetCurrentPageUrl());
            }
            catch (UnauthorizedAccessException ex)
            {
                lblError.Text = ex.Message;
            }
            catch (ArgumentException ex)
            {
                lblError.Text = ex.Message;
            }
        }
示例#30
0
        private void btnUpdate_Click(object sender, EventArgs e)
        {
            Page.Validate("feeds");
            if (!Page.IsValid)
            {
                return;
            }

            RssFeed feed = new RssFeed(ModuleId, ItemId);

            if (feed.ModuleId != ModuleId)
            {
                SiteUtils.RedirectToAccessDeniedPage(this);
                return;
            }

            feed.ModuleId = ModuleId;
            feed.Author   = txtAuthor.Text;
            feed.Url      = txtWebSite.Text;
            feed.RssUrl   = txtRssUrl.Text;
            feed.ImageUrl = txtImageUrl.Text;
            int sortRank = 500;

            int.TryParse(txtSortRank.Text, out sortRank);
            feed.SortRank = sortRank;

            SiteUser siteUser = SiteUtils.GetCurrentSiteUser();

            if (siteUser == null)
            {
                return;
            }

            Module module = new Module(ModuleId);

            feed.ModuleGuid       = module.ModuleGuid;
            feed.UserId           = siteUser.UserId;
            feed.UserGuid         = siteUser.UserGuid;
            feed.LastModUserGuid  = siteUser.UserGuid;
            feed.PublishByDefault = chkPublishByDefault.Checked;

            if (feed.Save())
            {
                CurrentPage.UpdateLastModifiedTime();

                FeedCache.RefreshFeed(
                    feed,
                    ModuleId,
                    module.ModuleGuid,
                    config.MaxDaysOld,
                    config.MaxEntriesPerFeed,
                    config.EnableSelectivePublishing);


                String rssFriendlyUrl = "aggregator" + ModuleId.ToInvariantString() + "rss.aspx";
                if (!FriendlyUrl.Exists(siteSettings.SiteId, rssFriendlyUrl))
                {
                    FriendlyUrl friendlyUrl = new FriendlyUrl();
                    friendlyUrl.SiteId   = siteSettings.SiteId;
                    friendlyUrl.SiteGuid = siteSettings.SiteGuid;
                    friendlyUrl.Url      = rssFriendlyUrl;
                    friendlyUrl.RealUrl  = "~/FeedManager/FeedAggregate.aspx?pageid=" + PageId.ToInvariantString() + "&mid=" + ModuleId.ToInvariantString();
                    friendlyUrl.Save();
                }

                if (hdnReturnUrl.Value.Length > 0)
                {
                    WebUtils.SetupRedirect(this, hdnReturnUrl.Value);
                    return;
                }

                WebUtils.SetupRedirect(this, SiteUtils.GetCurrentPageUrl());
            }
        }
示例#31
0
        public async Task<ActionResult> ExternalLoginConfirmation(ExternalLoginConfirmationViewModel model, string returnUrl)
        {
            if (User.Identity.IsAuthenticated)
            {
                return RedirectToAction("Index", "Manage");
            }

            if (ModelState.IsValid)
            {
                // Get the information about the user from the external login provider
                var info = await AuthenticationManager.GetExternalLoginInfoAsync();
                if (info == null)
                {
                    return View("ExternalLoginFailure");
                }
                var user = new SiteUser { UserName = model.Email, Email = model.Email };
                var result = await UserManager.CreateAsync(user);
                if (result.Succeeded)
                {
                    result = await UserManager.AddLoginAsync(user.Id, info.Login);
                    if (result.Succeeded)
                    {
                        await SignInManager.SignInAsync(user, isPersistent: false, rememberBrowser: false);
                        return RedirectToLocal(returnUrl);
                    }
                }
                AddErrors(result);
            }

            ViewBag.ReturnUrl = returnUrl;
            return View(model);
        }
示例#32
0
        private void btnUpdate_Click(object sender, EventArgs e)
        {
            if (forum == null)
            {
                forum = new Forum(forumId);
            }

            if (WebUser.IsInRoles(forum.RolesThatCanPost))
            {
                if (Request.IsAuthenticated)
                {
                    captcha.Enabled     = false;
                    pnlAntiSpam.Visible = false;
                }
            }
            else
            {
                SiteUtils.RedirectToAccessDeniedPage(this);
                return;
            }

            Page.Validate("Forum");
            if (!Page.IsValid)
            {
                PopulateControls();
                return;
            }
            else
            {
                if ((config.UseSpamBlockingForAnonymous) && (pnlAntiSpam.Visible) && (captcha.Enabled))
                {
                    if (!captcha.IsValid)
                    {
                        PopulateControls();
                        return;
                    }
                }

                ForumThread thread;
                bool        userIsAllowedToUpdateThisPost = false;
                if (threadId == -1)
                {
                    //new thread
                    thread                  = new ForumThread();
                    thread.ForumId          = forumId;
                    thread.IncludeInSiteMap = forum.IncludeInGoogleMap;
                    thread.SetNoIndexMeta   = forum.AddNoIndexMeta;
                }
                else
                {
                    if (postId > -1)
                    {
                        thread = new ForumThread(threadId, postId);
                        if (isModerator || (this.theUser.UserId == thread.PostUserId))
                        {
                            userIsAllowedToUpdateThisPost = true;
                        }

                        if ((isModerator) && (divSortOrder.Visible))
                        {
                            int sort = thread.PostSortOrder;
                            int.TryParse(txtSortOrder.Text, out sort);
                            thread.PostSortOrder = sort;
                        }
                    }
                    else
                    {
                        thread = new ForumThread(threadId);
                    }

                    //existing thread but it does not belong to this forum
                    if (forumId != thread.ForumId)
                    {
                        SiteUtils.RedirectToAccessDeniedPage(this);
                        return;
                    }
                }

                thread.ContentChanged += new ContentChangedEventHandler(thread_ContentChanged);
                thread.PostSubject     = this.txtSubject.Text;
                thread.PostMessage     = edMessage.Text;

                bool isNewPost = (thread.PostId == -1);

                SiteUser siteUser = null;

                if (Request.IsAuthenticated)
                {
                    siteUser = SiteUtils.GetCurrentSiteUser();
                    if (siteUser != null)
                    {
                        thread.PostUserId = siteUser.UserId;
                    }
                    if (chkSubscribeToForum.Checked)
                    {
                        forum.Subscribe(siteUser.UserId);
                    }
                    else
                    {
                        thread.SubscribeUserToThread = this.chkNotifyOnReply.Checked;
                    }
                }
                else
                {
                    thread.PostUserId = -1;                     //guest
                }

                string threadViewUrl;
                if (ForumConfiguration.CombineUrlParams)
                {
                    threadViewUrl = SiteRoot + "/Forums/Thread.aspx?pageid=" + pageId.ToInvariantString()
                                    + "&t=" + thread.ThreadId.ToInvariantString()
                                    + "~" + this.pageNumber.ToInvariantString();
                }
                else
                {
                    threadViewUrl = SiteRoot + "/Forums/Thread.aspx?thread="
                                    + thread.ThreadId.ToInvariantString()
                                    + "&mid=" + moduleId.ToInvariantString()
                                    + "&pageid=" + pageId.ToInvariantString()
                                    + "&ItemID=" + forumId.ToInvariantString()
                                    + "&pagenumber=" + this.pageNumber.ToInvariantString();
                }

                if ((thread.PostId == -1) || (userIsAllowedToUpdateThisPost))
                {
                    thread.Post();
                    CurrentPage.UpdateLastModifiedTime();

                    if (ForumConfiguration.CombineUrlParams)
                    {
                        threadViewUrl = SiteRoot + "/Forums/Thread.aspx?pageid=" + pageId.ToInvariantString()
                                        + "&t=" + thread.ThreadId.ToInvariantString()
                                        + "~" + pageNumber.ToInvariantString()
                                        + "#post" + thread.PostId.ToInvariantString();
                    }
                    else
                    {
                        threadViewUrl = SiteRoot + "/Forums/Thread.aspx?thread="
                                        + thread.ThreadId.ToInvariantString()
                                        + "&mid=" + moduleId.ToInvariantString()
                                        + "&pageid=" + pageId.ToInvariantString()
                                        + "&ItemID=" + forum.ItemId.ToInvariantString()
                                        + "&pagenumber=" + pageNumber.ToInvariantString()
                                        + "#post" + thread.PostId.ToInvariantString();
                    }

                    if ((isNewPost) || (!config.SuppressNotificationOfPostEdits))
                    {
                        bool notifyModeratorOnly = false;

                        if (forum.RequireModForNotify)
                        {
                            notifyModeratorOnly = true;

                            if (forum.AllowTrustedDirectNotify && (siteUser != null) && siteUser.Trusted)
                            {
                                notifyModeratorOnly = false;
                            }
                        }

                        Module m = GetModule(moduleId, Forum.FeatureGuid);

                        ForumNotification.NotifySubscribers(
                            forum,
                            thread,
                            m,
                            siteUser,
                            siteSettings,
                            config,
                            SiteRoot,
                            pageId,
                            pageNumber,
                            SiteUtils.GetDefaultCulture(),
                            ForumConfiguration.GetSmtpSettings(),
                            notifyModeratorOnly
                            );

                        if (!notifyModeratorOnly)
                        {
                            thread.NotificationSent = true;
                            thread.UpdatePost();
                        }
                    }

                    //String cacheDependencyKey = "Module-" + moduleId.ToInvariantString();
                    //CacheHelper.TouchCacheDependencyFile(cacheDependencyKey);
                    CacheHelper.ClearModuleCache(moduleId);
                    SiteUtils.QueueIndexing();
                }


                Response.Redirect(threadViewUrl);
            }
        }
示例#33
0
        public override void UserRegisteredHandler(object sender, UserRegisteredEventArgs e)
        {
            //if (sender == null) return;
            if (e == null)
            {
                return;
            }
            if (e.SiteUser == null)
            {
                return;
            }

            if (!WebConfigSettings.NotifyAdminsOnNewUserRegistration)
            {
                return;
            }

            log.Debug("NotifyAdminUserRegisteredHandler called for new user " + e.SiteUser.Email);

            if (HttpContext.Current == null)
            {
                return;
            }

            //lookup admin users and send notification email with link to manage user

            SiteSettings siteSettings   = CacheHelper.GetCurrentSiteSettings();
            CultureInfo  defaultCulture = ResourceHelper.GetDefaultCulture();

            //Role adminRole = Role.GetRoleByName(siteSettings.SiteId, "Admins");

            //if (adminRole == null)
            //{
            //    // TODO: log it?
            //    return;
            //}

            //DataTable admins = SiteUser.GetRoleMembers(adminRole.RoleId);

            string subjectTemplate
                = ResourceHelper.GetMessageTemplate(defaultCulture,
                                                    "NotifyAdminofNewUserRegistationSubject.config");

            string textBodyTemplate = ResourceHelper.GetMessageTemplate(defaultCulture,
                                                                        "NotifyAdminofNewUserRegistationMessage.config");

            string       siteRoot     = SiteUtils.GetNavigationSiteRoot();
            SmtpSettings smtpSettings = SiteUtils.GetSmtpSettings();

            List <string> adminEmails = SiteUser.GetEmailAddresses(siteSettings.SiteId, "Admins;");

            //foreach (DataRow row in admins.Rows)
            foreach (string email in adminEmails)
            {
                if (WebConfigSettings.EmailAddressesToExcludeFromAdminNotifications.IndexOf(email, StringComparison.InvariantCultureIgnoreCase) > -1)
                {
                    continue;
                }

                EmailMessageTask messageTask = new EmailMessageTask(smtpSettings);

                messageTask.EmailFrom = siteSettings.DefaultEmailFromAddress;
                //messageTask.EmailTo = row["Email"].ToString();
                messageTask.EmailTo = email;

                messageTask.Subject = string.Format(
                    defaultCulture,
                    subjectTemplate,
                    e.SiteUser.Email,
                    siteRoot
                    );


                string manageUserLink = siteRoot + "/Admin/ManageUsers.aspx?userid="
                                        + e.SiteUser.UserId.ToString(CultureInfo.InvariantCulture);

                messageTask.TextBody = string.Format(
                    defaultCulture,
                    textBodyTemplate,
                    siteSettings.SiteName,
                    siteRoot,
                    manageUserLink
                    );

                messageTask.SiteGuid = siteSettings.SiteGuid;
                messageTask.QueueTask();
            }

            WebTaskManager.StartOrResumeTasks();
        }
示例#34
0
        private void LoadSettings()
        {
            virtualRoot = WebUtils.GetApplicationRoot();

            pageId                = WebUtils.ParseInt32FromQueryString("pageid", -1);
            moduleId              = WebUtils.ParseInt32FromQueryString("mid", -1);
            forumId               = WebUtils.ParseInt32FromQueryString("forumid", -1);
            threadId              = WebUtils.ParseInt32FromQueryString("thread", -1);
            postId                = WebUtils.ParseInt32FromQueryString("postid", -1);
            pageNumber            = WebUtils.ParseInt32FromQueryString("pagenumber", 1);
            lnkCancel.NavigateUrl = SiteUtils.GetCurrentPageUrl();
            timeOffset            = SiteUtils.GetUserTimeOffset();
            timeZone              = SiteUtils.GetUserTimeZone();

            isModerator    = UserCanEditModule(moduleId, Forum.FeatureGuid);
            moduleSettings = ModuleSettings.GetModuleSettings(moduleId);
            config         = new ForumConfiguration(moduleSettings);

            postList.Config                 = config;
            postList.PageId                 = pageId;
            postList.ModuleId               = moduleId;
            postList.ItemId                 = forumId;
            postList.ThreadId               = threadId;
            postList.PageNumber             = pageNumber;
            postList.IsAdmin                = WebUser.IsAdmin;
            postList.IsCommerceReportViewer = WebUser.IsInRoles(siteSettings.CommerceReportViewRoles);
            postList.SiteRoot               = SiteRoot;
            postList.ImageSiteRoot          = ImageSiteRoot;
            postList.SiteSettings           = siteSettings;
            postList.IsEditable             = false;
            postList.IsSubscribedToForum    = true;

            postListAlt.Config                 = config;
            postListAlt.PageId                 = pageId;
            postListAlt.ModuleId               = moduleId;
            postListAlt.ItemId                 = forumId;
            postListAlt.ThreadId               = threadId;
            postListAlt.PageNumber             = pageNumber;
            postListAlt.IsAdmin                = postList.IsAdmin;
            postListAlt.IsCommerceReportViewer = WebUser.IsInRoles(siteSettings.CommerceReportViewRoles);
            postListAlt.SiteRoot               = SiteRoot;
            postListAlt.ImageSiteRoot          = ImageSiteRoot;
            postListAlt.SiteSettings           = siteSettings;
            postListAlt.IsEditable             = false;
            postListAlt.IsSubscribedToForum    = true;

            if (Request.IsAuthenticated)
            {
                theUser = SiteUtils.GetCurrentSiteUser();
                if (theUser != null)
                {
                    if (forumId > -1)
                    {
                        isSubscribedToForum = Forum.IsSubscribed(forumId, theUser.UserId);
                    }
                    if (threadId > -1)
                    {
                        isSubscribedToThread = ForumThread.IsSubscribed(threadId, theUser.UserId);
                    }
                }
            }

            if (isModerator)
            {
                edMessage.WebEditor.ToolBar = ToolBar.FullWithTemplates;
            }
            else if ((Request.IsAuthenticated) && (WebUser.IsInRoles(siteSettings.UserFilesBrowseAndUploadRoles)))
            {
                edMessage.WebEditor.ToolBar = ToolBar.ForumWithImages;
            }
            else
            {
                edMessage.WebEditor.ToolBar = ToolBar.Forum;
            }

            edMessage.WebEditor.SetFocusOnStart = true;
            edMessage.WebEditor.Height          = Unit.Parse("350px");

            if (config.UseSpamBlockingForAnonymous)
            {
                captcha.ProviderName        = siteSettings.CaptchaProvider;
                captcha.Captcha.ControlID   = "captcha" + moduleId.ToString(CultureInfo.InvariantCulture);
                captcha.RecaptchaPrivateKey = siteSettings.RecaptchaPrivateKey;
                captcha.RecaptchaPublicKey  = siteSettings.RecaptchaPublicKey;
            }

            forum = new Forum(forumId);

            if (displaySettings.UseAltPostList)
            {
                postList.Visible    = false;
                postListAlt.Visible = true;
            }

            AddClassToBody("editforumpost");
        }
示例#35
0
        public async Task <IActionResult> Register(RegisterViewModel model)
        {
            ViewData["Title"] = sr["Register"];
            if ((Site.CaptchaOnRegistration) && (Site.RecaptchaPublicKey.Length > 0))
            {
                model.RecaptchaSiteKey = Site.RecaptchaPublicKey;
            }

            model.RegistrationPreamble  = Site.RegistrationPreamble;
            model.RegistrationAgreement = Site.RegistrationAgreement;

            bool isValid = ModelState.IsValid;

            if (isValid)
            {
                if ((Site.CaptchaOnRegistration) && (Site.RecaptchaPublicKey.Length > 0))
                {
                    string recpatchaSecretKey = Site.RecaptchaPrivateKey;

                    var captchaResponse = await this.ValidateRecaptcha(Request, recpatchaSecretKey);

                    if (!captchaResponse.Success)
                    {
                        //if (captchaResponse.ErrorCodes.Count <= 0)
                        //{
                        //    return View(model);
                        //}

                        ////TODO: log these errors rather than show them in the ui
                        //var error = captchaResponse.ErrorCodes[0].ToLower();
                        //switch (error)
                        //{
                        //    case ("missing-input-secret"):
                        //        ModelState.AddModelError("recaptchaerror", "The secret parameter is missing.");
                        //        break;
                        //    case ("invalid-input-secret"):
                        //        ModelState.AddModelError("recaptchaerror", "The secret parameter is invalid or malformed.");
                        //        break;
                        //    case ("missing-input-response"):
                        //        ModelState.AddModelError("recaptchaerror", "The response parameter is missing.");
                        //        break;
                        //    case ("invalid-input-response"):
                        //        ModelState.AddModelError("recaptchaerror", "The response parameter is invalid or malformed.");
                        //        break;
                        //    default:
                        //        ModelState.AddModelError("recaptchaerror", "Error occured. Please try again");
                        //        break;
                        //}

                        ModelState.AddModelError("recaptchaerror", "reCAPTCHA Error occured. Please try again");
                        isValid = false;
                    }
                }

                //if (Site.RegistrationAgreement.Length > 0)
                //{
                //    if (!model.AgreeToTerms)
                //    {
                //        ModelState.AddModelError("agreementerror", "You must agree to the terms");
                //        isValid = false;
                //    }
                //}

                if (!isValid)
                {
                    return(View(model));
                }

                var user = new SiteUser
                {
                    UserName        = model.LoginName.Length > 0? model.LoginName : model.Email.Replace("@", string.Empty).Replace(".", string.Empty),
                    Email           = model.Email,
                    FirstName       = model.FirstName,
                    LastName        = model.LastName,
                    DisplayName     = model.DisplayName,
                    AccountApproved = Site.RequireApprovalBeforeLogin ? false : true
                };

                if (model.DateOfBirth.HasValue)
                {
                    user.DateOfBirth = model.DateOfBirth.Value;
                }

                var result = await userManager.CreateAsync(user, model.Password);

                if (result.Succeeded)
                {
                    await ipAddressTracker.TackUserIpAddress(Site.Id, user.Id);

                    if (Site.RequireConfirmedEmail) // require email confirmation
                    {
                        var code = await userManager.GenerateEmailConfirmationTokenAsync(user);

                        var callbackUrl = Url.Action(new UrlActionContext {
                            Action     = "ConfirmEmail",
                            Controller = "Account",
                            Values     = new { userId = user.Id.ToString(), code = code },
                            Protocol   = HttpContext.Request.Scheme
                        });

                        emailSender.SendAccountConfirmationEmailAsync(
                            Site,
                            model.Email,
                            sr["Confirm your account"],
                            callbackUrl).Forget();

                        if (this.SessionIsAvailable())
                        {
                            this.AlertSuccess(sr["Please check your email inbox, we just sent you a link that you need to click to confirm your account"], true);

                            return(Redirect("/"));
                        }
                        else
                        {
                            return(RedirectToAction("EmailConfirmationRequired", new { userId = user.Id, didSend = true }));
                        }
                    }
                    else
                    {
                        if (Site.RequireApprovalBeforeLogin)
                        {
                            emailSender.AccountPendingApprovalAdminNotification(Site, user).Forget();
                            return(RedirectToAction("PendingApproval", new { userId = user.Id, didSend = true }));
                        }
                        else
                        {
                            await signInManager.SignInAsync(user, isPersistent : false);

                            //return Redirect("/");
                            return(this.RedirectToSiteRoot(Site));
                        }
                    }
                }
                AddErrors(result);
            }

            // If we got this far, something failed, redisplay form
            return(View(model));
        }
示例#36
0
        void btnSave_Click(object sender, EventArgs e)
        {
            bool   isExists  = false;
            string qLanguage = ddLang.GetValue().Trim();

            isExists = Quran.Exists(siteSettings.SiteId, this.quranID, qLanguage, this.txtTitle.Text.Trim());
            if (isExists)
            {
                lblmessage.Visible = true;
                lblmessage.Text    = Resources.iQuranMessagesResources.TitleExists;
                return;
            }

            if (this.txtTitle.Text.Trim().Length < 1)
            {
                lblmessage.Visible = true;
                lblmessage.Text    = Resources.iQuranMessagesResources.TitleRequired;
                return;
            }

            string tmpEditorValue = string.Empty;

            tmpEditorValue = Regex.Replace((edDescription.Text).ToString(), @"<[^>]*>", String.Empty).Replace("\r\n", String.Empty).Trim();

            if (tmpEditorValue.Length < 1)
            {
                lblmessage.Visible = true;
                lblmessage.Text    = Resources.iQuranMessagesResources.QuranDescriptionRequired;
                return;
            }

            if (ddLang.GetValue() == "na")
            {
                lblmessage.Visible = true;
                lblmessage.Text    = Resources.iQuranMessagesResources.QuranLanguageRequired;
                return;
            }


            int siteid = siteSettings.SiteId;

            currentUser = SiteUtils.GetCurrentSiteUser();
            Quran quran = new Quran(siteid, quranID);

            quran.QuranID          = this.quranID;
            quran.Title            = SecurityHelper.RemoveMarkup(this.txtTitle.Text);
            quran.IsActive         = bool.Parse(this.cbIsActive.Checked.ToString());
            quran.IsDefault        = bool.Parse(this.cbIsDefault.Checked.ToString());
            quran.Description      = this.edDescription.Text;
            quran.TRanslatorDetUrl = Regex.Replace((edTRanslatorDetUrl.Text).ToString(), @"<[^>]*>", String.Empty).Replace("\r\n", String.Empty).Trim();
            quran.TranslationSrc   = txtTranslationSrc.Text + "";
            quran.SiteId           = siteid;
            quran.CreatedByUserId  = currentUser.UserId;
            quran.QLanguage        = qLanguage;


            //quran.SuraCount = lblSuraCount.Text;
            bool res = quran.Save();

            if (res == true)
            {
                string addDate = String.Format(DateTime.Now.ToString(), "mm dd yyyy");
                log.Info("user " + currentUser.Name + " Added Quran Version : " + quran.Title + " at:  " + addDate);
                if (hdnFromWhere.Value.Contains("?"))
                {
                    WebUtils.SetupRedirect(this, hdnFromWhere.Value + "&st=ok");
                }
                else
                {
                    WebUtils.SetupRedirect(this, hdnFromWhere.Value + "?st=ok");
                }
            }
            else
            {
                if (hdnFromWhere.Value.Contains("?"))
                {
                    WebUtils.SetupRedirect(this, hdnFromWhere.Value + "&st=no");
                }
                else
                {
                    WebUtils.SetupRedirect(this, hdnFromWhere.Value + "?st=no");
                }
            }
        }
示例#37
0
 public void SaveCurrentUser(SiteUser obj)
 {
     obj.Save();
     SessionObject.CurrentSiteUser = obj;
 }
示例#38
0
        private int Save()
        {
            Page.Validate("Author");

            if (!Page.IsValid)
            {
                return(-1);
            }
            try
            {
                author.LinkFacebook  = txtfb.Text;
                author.LinkInstagram = txtinstagram.Text;
                author.LinkPinterest = txtpinterest.Text;
                author.LinkTwitter   = txttwinter.Text;
                author.Name          = txtFullName.Text;
                SiteUser temp = new SiteUser(siteSettings, author.UserID);
                temp.Signature = editDescription.Text;
                if (fileImage.UploadedFiles.Count > 0)
                {
                    imageFolderPath = AuthorHepper.MediaFolderPath(siteSettings.SiteId, author.UserID);


                    AuthorHepper.VerifyAuthorFolders(fileSystem, imageFolderPath);

                    foreach (UploadedFile file in fileImage.UploadedFiles)
                    {
                        string ext = file.GetExtension();
                        if (SiteUtils.IsAllowedUploadBrowseFile(ext, WebConfigSettings.ImageFileExtensions))
                        {
                            ContentMedia media = new ContentMedia();
                            media.SiteGuid = siteSettings.SiteGuid;
                            //image.Title = txtImageTitle.Text;
                            media.DisplayOrder = 0;

                            string newFileName  = file.FileName.ToCleanFileName(WebConfigSettings.ForceLowerCaseForUploadedFiles);
                            string newImagePath = VirtualPathUtility.Combine(imageFolderPath, newFileName);

                            if (media.MediaFile == newFileName)
                            {
                                // an existing image delete the old one
                                fileSystem.DeleteFile(newImagePath);
                            }
                            else
                            {
                                // this is a new newsImage instance, make sure we don't use the same file name as any other instance
                                int i = 1;
                                while (fileSystem.FileExists(VirtualPathUtility.Combine(imageFolderPath, newFileName)))
                                {
                                    newFileName = i.ToInvariantString() + newFileName;
                                    i          += 1;
                                }
                            }

                            newImagePath = VirtualPathUtility.Combine(imageFolderPath, newFileName);

                            file.SaveAs(Server.MapPath(newImagePath));

                            media.MediaFile     = newFileName;
                            media.ThumbnailFile = newFileName;

                            author.Avatar = newFileName;
                            media.Save();
                            AuthorHepper.ProcessImage(media, fileSystem, imageFolderPath, file.FileName);
                        }
                    }
                }


                if (temp.Save() && author.Save())
                {
                    ImageAvatar.ImageUrl = AuthorHepper.GetAvatarAuthor(siteSettings.SiteId, author.UserID);
                    LogActivity.Write("Update Author", author.Name);
                    message.SuccessMessage = ResourceHelper.GetResourceString("CustomResources", "UpdateAuthorSuccess");
                }
            }
            catch (Exception ex)
            {
                log.Error(ex.Message);
            }
            return(author.AuthorID);
        }
示例#39
0
        //public static bool IsNotAllowedToEditModuleSettings
        //{
        //    get
        //    {
        //        if (!HttpContext.Current.Request.IsAuthenticated) return true;
        //        if (IsAdmin) { return false; }
        //        if (IsContentAdmin) { return false; }
        //        if (ConfigurationManager.AppSettings["RolesNotAllowedToEditModuleSettings"] != null)
        //        {
        //            string forbiddenRoles = ConfigurationManager.AppSettings["RolesNotAllowedToEditModuleSettings"];
        //            if (!string.IsNullOrEmpty(forbiddenRoles))
        //            {
        //                return IsInRoles(forbiddenRoles);
        //            }
        //        }
        //        return true;
        //    }
        //}
        public static bool HasEditPermissions(int siteId, int moduleId, int pageId)
        {
            if (HttpContext.Current == null || HttpContext.Current.User == null) return false;

            if (!HttpContext.Current.Request.IsAuthenticated) return false;

            if (IsAdmin || IsContentAdmin) return true;

            Module module = new Module(moduleId, pageId);
            PageSettings pageSettings = new PageSettings(siteId, module.PageId);

            if (pageSettings == null) return false;
            if (pageSettings.PageId < 0) return false;

            if (IsInRoles(pageSettings.EditRoles) || IsInRoles(module.AuthorizedEditRoles))
            {
                return true;
            }

            if (module.EditUserId > 0)
            {
                SiteSettings siteSettings = (SiteSettings)HttpContext.Current.Items["SiteSettings"];
                SiteUser siteUser = new SiteUser(siteSettings, HttpContext.Current.User.Identity.Name);
                if (module.EditUserId == siteUser.UserId)
                {
                    return true;
                }
            }

            return false;
        }
示例#40
0
 private void LoadSettings()
 {
     currentUser  = SiteUtils.GetCurrentSiteUser();
     siteSettings = CacheHelper.GetCurrentSiteSettings();
 }
 protected override void FillSearch(Uri context, string[] entityTypes, string searchPattern, string hierarchyNodeID, int maxCount, SPProviderHierarchyTree searchTree) {
     if (!EntityTypesContain(entityTypes, SPClaimEntityTypes.FormsRole)) {
         return;
     }
     var user = new SiteUser() {
         LoginName = searchPattern,
         DisplayName = searchPattern
     };
     PickerEntity entity = GetPickerEntity(user);
     searchTree.AddEntity(entity);
 }
示例#42
0
        public async Task OnGetAsync()
        {
            SiteUser user = await _userManager.GetUserAsync(User);

            Quotations = await _context.Quotations.Where(q => q.User == user).ToListAsync();
        }
 protected override void FillResolve(Uri context, string[] entityTypes, string resolveInput, List<PickerEntity> resolved) {
     var user = new SiteUser() {
         LoginName = resolveInput,
         DisplayName = resolveInput
     };
     if (null != user) {
         PickerEntity entity = GetPickerEntity(user);
         resolved.Add(entity);
     }
 }
示例#44
0
        void application_AuthenticateRequest(object sender, EventArgs e)
        {
            //if (debugLog) log.Debug("AuthHandlerHttpModule Application_AuthenticateRequest");

            if (sender == null)
            {
                return;
            }

            HttpApplication app = (HttpApplication)sender;

            if (app.Request == null)
            {
                return;
            }
            if (!app.Request.IsAuthenticated)
            {
                return;
            }

            if (WebUtils.IsRequestForStaticFile(app.Request.Path))
            {
                return;
            }
            if (app.Request.Path.ContainsCaseInsensitive(".ashx"))
            {
                return;
            }
            if (app.Request.Path.ContainsCaseInsensitive(".axd"))
            {
                return;
            }
            if (app.Request.Path.ContainsCaseInsensitive("setup/default.aspx"))
            {
                return;
            }


            //if (debugLog) log.Debug("IsAuthenticated == true");
            SiteSettings siteSettings;

            try
            {
                siteSettings = CacheHelper.GetCurrentSiteSettings();
            }
            catch (System.Data.Common.DbException ex)
            {
                // can happen during upgrades
                log.Error(ex);
                return;
            }
            catch (InvalidOperationException ex)
            {
                log.Error(ex);
                return;
            }
            catch (Exception ex)
            {
                // hate to trap System.Exception but SqlCeException doe snot inherit from DbException as it should
                if (DatabaseHelper.DBPlatform() != "SqlCe")
                {
                    throw;
                }
                log.Error(ex);
                return;
            }
            bool useFolderForSiteDetection = WebConfigSettings.UseFolderBasedMultiTenants;

            // Added by Haluk Eryuksel - 2006-01-23
            // support for Windows authentication
            if (
                (app.User.Identity.AuthenticationType == "NTLM") ||
                (app.User.Identity.AuthenticationType == "Negotiate")
                // || ( Context.User.Identity.AuthenticationType == "Windows" )
                )
            {
                //Added by Benedict Chan - 2008-08-05
                //Added Cookie here so that we don't have to check the users in every page, also to authenticate under NTLM with "useFolderForSiteDetection == true"
                string cookieName = "siteguid" + siteSettings.SiteGuid;
                if (!CookieHelper.CookieExists(cookieName))
                {
                    bool existsInDB;
                    existsInDB = SiteUser.LoginExistsInDB(siteSettings.SiteId, app.Context.User.Identity.Name);

                    if (!existsInDB)
                    {
                        SiteUser u = new SiteUser(siteSettings);
                        u.Name      = app.Context.User.Identity.Name;
                        u.LoginName = app.Context.User.Identity.Name;
                        u.Email     = GuessEmailAddress(u.Name);
                        u.Password  = SiteUser.CreateRandomPassword(7, WebConfigSettings.PasswordGeneratorChars);

                        mojoMembershipProvider m = Membership.Provider as mojoMembershipProvider;
                        if (m != null)
                        {
                            u.Password = m.EncodePassword(siteSettings, u, u.Password);
                        }

                        u.Save();
                        NewsletterHelper.ClaimExistingSubscriptions(u);

                        UserRegisteredEventArgs args = new UserRegisteredEventArgs(u);
                        OnUserRegistered(args);
                    }

                    SiteUser siteUser = new SiteUser(siteSettings, app.Context.User.Identity.Name);
                    CookieHelper.SetCookie(cookieName, siteUser.UserGuid.ToString(), true);

                    //Copied logic from SiteLogin.cs  Since we will skip them if we use NTLM
                    if (siteUser.UserId > -1 && siteSettings.AllowUserSkins && siteUser.Skin.Length > 0)
                    {
                        SiteUtils.SetSkinCookie(siteUser);
                    }

                    // track user ip address
                    try
                    {
                        UserLocation userLocation = new UserLocation(siteUser.UserGuid, SiteUtils.GetIP4Address());
                        userLocation.SiteGuid = siteSettings.SiteGuid;
                        userLocation.Hostname = app.Request.UserHostName;
                        userLocation.Save();
                        log.Info("Set UserLocation : " + app.Request.UserHostName + ":" + SiteUtils.GetIP4Address());
                    }
                    catch (Exception ex)
                    {
                        log.Error(SiteUtils.GetIP4Address(), ex);
                    }
                }

                //End-Added by Benedict Chan
            }
            // End-Added by Haluk Eryuksel


            if ((useFolderForSiteDetection) && (!WebConfigSettings.UseRelatedSiteMode))
            {
                // replace GenericPrincipal with custom one
                //string roles = string.Empty;
                if (!(app.Context.User is mojoIdentity))
                {
                    app.Context.User = new mojoPrincipal(app.Context.User);
                }
            }
        }
 /// <summary>
 /// There are no comments for SiteUser in the schema.
 /// </summary>
 public void AddToSiteUser(SiteUser siteUser)
 {
     base.AddObject("SiteUser", siteUser);
 }
 public UserPreDeleteEventArgs(SiteUser siteUser, bool flaggedAsDeletedOnly)
 {
     _siteUser             = siteUser;
     _flaggedAsDeletedOnly = flaggedAsDeletedOnly;
 }
        private MembershipUser CreateMembershipUserFromSiteUser(SiteUser siteUser)
        {
            if ((siteUser == null) || (siteUser.UserId == Guid.Empty))
                return null;

            return new MembershipUser(
            this.name,
            siteUser.LoginName,
            siteUser.UserId,
            siteUser.Email,
            "",
            siteUser.Comment,
            true,
            siteUser.IsLockedOut,
            siteUser.DateCreated,
            siteUser.LastLoginDate,
            siteUser.LastActivityDate,
            siteUser.LastPasswordChangedDate,
            siteUser.LastLockoutDate);
        }
示例#48
0
        void btnSave_Click(object sender, EventArgs e)
        {
            bool isExists = false;

            isExists = QuranSura.Exists(siteSettings.SiteId, this.quranID, this.suraID, this.txtTitle.Text.Trim());
            if (isExists)
            {
                lblmessage.Visible = true;
                lblmessage.Text    = Resources.iQuranMessagesResources.TitleExists;
                return;
            }

            int suraorder = -1;

            if (ddLang.GetValue().Trim() == "ar")
            {
                suraorder = int.Parse(txtSortOrder.Text.ToString());
            }
            else
            {
                suraorder = int.Parse(ddSelSura.SelectedItem.Value.ToString());
            }

            isExists = QuranSura.OrderExists(siteSettings.SiteId, this.quranID, this.suraID, suraorder);
            if (isExists)
            {
                lblmessage.Visible = true;
                lblmessage.Text    = Resources.iQuranMessagesResources.SuraOrderExists;
                return;
            }

            if (this.txtTitle.Text.Trim().Length < 1)
            {
                lblmessage.Visible = true;
                lblmessage.Text    = Resources.iQuranMessagesResources.TitleRequired;
                return;
            }

            int siteid = siteSettings.SiteId;

            currentUser = SiteUtils.GetCurrentSiteUser();
            QuranSura sura = new QuranSura(siteid, suraID);

            sura.SuraID  = this.suraID;
            sura.SiteID  = siteid;
            sura.QuranID = this.quranID;
            sura.Title   = SecurityHelper.RemoveMarkup(this.txtTitle.Text);
            sura.Place   = ddPlace.SelectedItem.Value.Trim();

            sura.IsActive        = bool.Parse(this.cbIsActive.Checked.ToString());
            sura.CreatedByUserId = currentUser.UserId;

            if (ddLang.GetValue().Trim() == "ar")
            {
                sura.SuraOrder = int.Parse(txtSortOrder.Text.ToString());
            }
            else
            {
                sura.SuraOrder = int.Parse(ddSelSura.SelectedItem.Value.ToString());
            }


            bool res = sura.Save();

            if (res == true)
            {
                string addDate = String.Format(DateTime.Now.ToString(), "mm dd yyyy");
                log.Info("user " + currentUser.Name + " Added Sura : " + sura.Title + " at:  " + addDate);
                if (hdnFromWhere.Value.Contains("?"))
                {
                    WebUtils.SetupRedirect(this, hdnFromWhere.Value + "&st=ok");
                }
                else
                {
                    WebUtils.SetupRedirect(this, hdnFromWhere.Value + "?st=ok");
                }
            }
            else
            {
                if (hdnFromWhere.Value.Contains("?"))
                {
                    WebUtils.SetupRedirect(this, hdnFromWhere.Value + "&st=no");
                }
                else
                {
                    WebUtils.SetupRedirect(this, hdnFromWhere.Value + "?st=no");
                }
            }
        }
        public override MembershipUser CreateUser(
        string userName,
        string password,
        string email,
        string passwordQuestion,
        string passwordAnswer,
        bool isApproved,
        object providerUserKey,
        out MembershipCreateStatus status)
        {
            /*
            * Takes, as input, a user name, password, e-mail address, and other information and adds
            * a new
            * user to the membership data source. CreateUser returns a MembershipUser object
            * representing the
            * newly created user. It also accepts an out parameter  that returns a
            * MembershipCreateStatus value indicating whether the user was successfully created or,
            * if the user
            * was not created, the reason why. If the user was not created, CreateUser returns null.
            * Before creating a new user,
            * CreateUser calls the provider's virtual OnValidatingPassword method to validate the
            * supplied password.
            * It then creates the user or cancels the action based on the outcome of the call.
            */
            if (String.IsNullOrEmpty(userName) || userName.Length > LoginnameMaxlength)
            {
                status = MembershipCreateStatus.InvalidUserName;
                return null;
            }

            //if (String.IsNullOrEmpty(email) || email.Length > EmailMaxlength)
            //{
            //    status = MembershipCreateStatus.InvalidEmail;
            //    return null;
            //}

            if (String.IsNullOrEmpty(password))
            {
                status = MembershipCreateStatus.InvalidPassword;
                return null;
            }

            //if (SiteUser.EmailExistsInDB(email))
            //{
            //    status = MembershipCreateStatus.DuplicateEmail;
            //    return null;
            //}

            //if (SiteUser.LoginExistsInDB(userName))
            //{
            //    status = MembershipCreateStatus.DuplicateUserName;
            //    return null;
            //}

            if (password.Length < MinRequiredPasswordLength)
            {
                status = MembershipCreateStatus.InvalidPassword;
                return null;
            }

            int nonAlphaNumericCharactersUsedCount = 0;

            for (int i = 0; i < password.Length; i++)
            {
                if (!char.IsLetterOrDigit(password, i))
                {
                    nonAlphaNumericCharactersUsedCount++;
                }
            }

            if (nonAlphaNumericCharactersUsedCount < MinRequiredNonAlphanumericCharacters)
            {
                status = MembershipCreateStatus.InvalidPassword;
                return null;
            }

            if (PasswordStrengthRegularExpression.Length > 0)
            {
                if (!Regex.IsMatch(password, PasswordStrengthRegularExpression))
                {
                    status = MembershipCreateStatus.InvalidPassword;
                    return null;
                }
            }

            ValidatePasswordEventArgs e = new ValidatePasswordEventArgs(userName, password, true);
            this.OnValidatingPassword(e);

            if (e.Cancel)
            {
                status = MembershipCreateStatus.InvalidPassword;
                return null;
            }

            password = EncodePassword(password, PasswordFormat);

            SiteUser siteUser = new SiteUser();
            siteUser.SiteId = Guid.Parse("cd348ff8-00c2-496b-8a65-5e78201f7780");
            siteUser.LoginName = userName;
            siteUser.Password = password;
            siteUser.Name = name;
            siteUser.Email = email;
            bool created = false;// siteUser.Save(); //Tao tai khoan moi cho nay

            if (created)
            {
                //Role.AddUserToDefaultRoles(siteUser);
                status = MembershipCreateStatus.Success;
                return CreateMembershipUserFromSiteUser(siteUser);
            }
            else
            {
                status = MembershipCreateStatus.UserRejected;
                return null;
            }
        }
        void btnSave_Click(object sender, EventArgs e)
        {
            string   paneName  = ddPaneNames.SelectedValue;
            DateTime beginDate = DateTime.UtcNow;
            DateTime endDate   = DateTime.MinValue;

            //Boolean beginDateInvalid = false;

            if (!DateTime.TryParse(dpBeginDate.Text, out beginDate))
            {
                //beginDateInvalid = true;
            }

            if (dpEndDate.Text.Length > 0)
            {
                if (!DateTime.TryParse(dpEndDate.Text, out endDate))
                {
                    endDate = DateTime.MinValue;
                }
            }
            else
            {
                endDate = DateTime.MinValue;
            }

            if (timeZone != null)
            {
                beginDate = beginDate.ToUtc(timeZone);
                if (endDate != DateTime.MinValue)
                {
                    endDate = endDate.ToUtc(timeZone);
                }
            }
            else
            {
                beginDate = beginDate.AddHours(-timeOffset);
                if (endDate != DateTime.MinValue)
                {
                    endDate = endDate.AddHours(-timeOffset);
                }
            }

            int moduleOrder = 1;

            int.TryParse(txtModuleOrder.Text, NumberStyles.Integer, CultureInfo.InvariantCulture, out moduleOrder);

            if (chkPublished.Checked)
            {
                Module.Publish(
                    currentPage.PageGuid,
                    currentModule.ModuleGuid,
                    currentModule.ModuleId,
                    pageId,
                    paneName,
                    moduleOrder,
                    beginDate,
                    endDate);
            }
            else
            {
                if (WebConfigSettings.LogIpAddressForContentDeletions)
                {
                    Module       m           = new Module(moduleId);
                    PageSettings contentPage = new PageSettings(CurrentSite.SiteId, pageId);
                    string       userName    = string.Empty;
                    SiteUser     currentUser = SiteUtils.GetCurrentSiteUser();
                    if (currentUser != null)
                    {
                        userName = currentUser.Name;
                    }

                    log.Info("user " + userName + " removed module " + m.ModuleTitle + " from page " + contentPage.PageName + " from ip address " + SiteUtils.GetIP4Address());
                }

                Module.DeleteModuleInstance(moduleId, pageId);
            }

            // rebuild page search index

            currentPage.PageIndex = CurrentPage.PageIndex;
            mojoPortal.SearchIndex.IndexHelper.RebuildPageIndexAsync(currentPage);

            pnlUpdate.Visible   = false;
            pnlFinished.Visible = true;
        }
        public override MembershipUser GetUser(object providerUserKey, bool userIsOnline)
        {
            /*
                                     * Takes, as input, a user name or user ID (the method is overloaded) and a Boolean value
                                     * indicating whether to update the user's LastActivityDate to show that the user is currently online.
                                     * GetUser returns a MembershipUser object representing the specified user. If the user name or
                                     * user ID is invalid (that is, if it doesn't represent a registered user) GetUser returns null (Nothing in Visual Basic).
                                     */
            if (providerUserKey != null)
            {
                SiteUser siteUser = null;
                if (providerUserKey is Guid)
                {
                    siteUser = new SiteUser((Guid)providerUserKey);
                    if (siteUser.UserId != Guid.Empty)
                    {
                        if (userIsOnline)
                        {
                            //siteUser.UpdateLastActivityTime();
                        }
                        return this.CreateMembershipUserFromSiteUser(siteUser);
                    }
                }
            }

            return null;
        }
        private void LoadSettings()
        {
            config           = new SharedFilesConfiguration(Settings);
            EditContentImage = WebConfigSettings.EditContentImage;
            lblError.Text    = String.Empty;

            FileSystemProvider p = FileSystemManager.Providers[WebConfigSettings.FileSystemProvider];

            if (p == null)
            {
                return;
            }

            fileSystem = p.GetFileSystem();

            if (fileSystem == null)
            {
                return;
            }

            siteUser = SiteUtils.GetCurrentSiteUser();

            newWindowMarkup = displaySettings.NewWindowLinkMarkup;

            if (BrowserHelper.IsIE())
            {
                //this is a needed hack because IE 8 doesn't work correctly with window.open
                // a "security feature" of IE 8
                // unfortunately this is not valid xhtml to use target but it works in IE
                newWindowMarkup = displaySettings.IeNewWindowLinkMarkup;
            }

            if (!SharedFilesConfiguration.DownloadLinksOpenNewWindow)
            {
                newWindowMarkup = string.Empty;
            }

            TimeOffset          = SiteUtils.GetUserTimeOffset();
            timeZone            = SiteUtils.GetUserTimeZone();
            fileVirtualBasePath = $"~/Data/Sites/{siteSettings.SiteId.ToInvariantString()}/SharedFiles/";

            try
            {
                // this keeps the action from changing during ajax postback in folder based sites
                SiteUtils.SetFormAction(Page, Request.RawUrl);
            }
            catch (MissingMethodException)
            {
                //this method was introduced in .NET 3.5 SP1
            }

            btnUpload2.Visible            = IsEditable;
            uploader.Visible              = IsEditable;
            uploader.MaxFilesAllowed      = SharedFilesConfiguration.MaxFilesToUploadAtOnce;
            uploader.ServiceUrl           = $"{SiteRoot}/SharedFiles/upload.ashx?pageid={PageId.ToInvariantString()}&mid={ModuleId.ToInvariantString()}";
            uploader.FormFieldClientId    = hdnCurrentFolderId.ClientID;
            uploader.UploadButtonClientId = btnUpload2.ClientID;

            if (IsEditable)
            {
                string refreshFunction = $"function refresh{ModuleId.ToInvariantString()}() {{ $('#{btnRefresh.ClientID}').click(); }};";

                uploader.UploadCompleteCallback = $"refresh{ModuleId.ToInvariantString()}";

                ScriptManager.RegisterClientScriptBlock(
                    this,
                    GetType(),
                    $"refresh{ModuleId.ToInvariantString()}",
                    refreshFunction,
                    true
                    );
            }


            if (dgFile.TableCssClass.Contains("jqtable") && !WebConfigSettings.DisablejQuery)
            {
                string script = $@"
function setupJTable{ModuleId.ToInvariantString()}() {{
	$('#{dgFile.ClientID} th').each(function() {{
		$(this).addClass('ui-state-default');
	}});

	$('table.jqtable td').each(function() {{
		$(this).addClass('ui-widget-content');
	}});

	$('table.jqtable tr').hover(
		function() {{
			$(this).children('td').addClass('ui-state-hover');
		}},
		function() {{
			$(this).children('td').removeClass('ui-state-hover');
		}}
	);

	$('table.jqtable tr').on('click', function() {{
		$(this).children('td').toggleClass('ui-state-highlight');
	}});
}};

Sys.WebForms.PageRequestManager.getInstance().add_endRequest(setupJTable{ModuleId.ToInvariantString()});";

                ScriptManager.RegisterStartupScript(
                    this,
                    GetType(),
                    $"jTable{ModuleId.ToInvariantString()}",
                    script,
                    true
                    );
            }


            trObjectCount.Visible = config.ShowObjectCount;

            if (config.InstanceCssClass.Length > 0)
            {
                pnlOuterWrap.SetOrAppendCss(config.InstanceCssClass);
            }

            if (WebConfigSettings.ForceLegacyFileUpload)
            {
                ScriptManager.GetCurrent(Page).RegisterPostBackControl(btnUpload2);
            }
        }
        public override void UpdateUser(MembershipUser user)
        {
            /*
                                    Takes, as input, a MembershipUser object representing a registered user and updates the
                                     * information stored for
                                     that user in the membership data source. If any of the input submitted in the MembershipUser
                                     * object is not valid,
                                     UpdateUser throws a ProviderException. Note that UpdateUser is not obligated to allow all
                                     * the data that
                                     can be encapsulated in a MembershipUser object to be updated in the data source.

                                     */

            if (user != null)
            {
                SiteUser siteUser;
                siteUser = new SiteUser(user.UserName);
                if (siteUser.UserId != Guid.Empty)
                {
                    //siteUser.Comment = user.Comment;
                    siteUser.Email = user.Email;
                    siteUser.LoginName = user.UserName;
                    //siteUser.ProfileApproved = user.IsApproved;
                    //if (
                    //    (user.PasswordQuestion != null)
                    //    &&(user.PasswordQuestion.Length > 0)
                    //    &&(user.PasswordQuestion != siteUser.PasswordQuestion)
                    //    )
                    //{
                    //    siteUser.PasswordQuestion = user.PasswordQuestion;
                    //}
                   // siteUser.Save();
                    if (user.LastActivityDate > siteUser.LastActivityDate)
                    {
                        //siteUser.UpdateLastActivityTime(); //cập nhật sau
                    }
                }
            }
        }
        private void DoSubscribe(LetterInfo letter, string email)
        {
            LetterSubscriber s = subscriptions.Fetch(siteSettings.SiteGuid, letter.LetterInfoGuid, email);

            bool needToSendVerification = false;

            if (s == null)
            {
                s                = new LetterSubscriber();
                s.SiteGuid       = siteSettings.SiteGuid;
                s.EmailAddress   = email;
                s.LetterInfoGuid = letter.LetterInfoGuid;
                if (showFormatOptions)
                {
                    s.UseHtml = rbHtmlFormat.Checked;
                }
                else
                {
                    s.UseHtml = htmlIsDefault;
                }

                if ((currentUser != null) && (string.Equals(currentUser.Email, email, StringComparison.InvariantCultureIgnoreCase)))
                {
                    s.UserGuid   = currentUser.UserGuid;
                    s.IsVerified = true;
                }
                else
                {
                    // user is not authenticated but may still exist
                    // attach userguid but don't flag as verified
                    // because we don't know that the user who submited the form is the account owner
                    SiteUser siteUser = SiteUser.GetByEmail(siteSettings, email);
                    if (siteUser != null)
                    {
                        s.UserGuid = siteUser.UserGuid;
                    }
                }
                s.IpAddress = SiteUtils.GetIP4Address();
                subscriptions.Save(s);

                LetterInfo.UpdateSubscriberCount(s.LetterInfoGuid);

                if (!s.IsVerified)
                {
                    needToSendVerification = true;
                }
            }
            else
            {
                // we found an existing subscription

                if (!s.IsVerified)
                {
                    // if the current authenticated user has the same email mark it as verified
                    if ((currentUser != null) && (string.Equals(currentUser.Email, email, StringComparison.InvariantCultureIgnoreCase)))
                    {
                        s.UserGuid = currentUser.UserGuid;
                        if (showFormatOptions)
                        {
                            s.UseHtml = rbHtmlFormat.Checked;
                        }
                        subscriptions.Save(s);
                        subscriptions.Verify(s.SubscribeGuid, true, Guid.Empty);
                    }
                    else if (s.BeginUtc < DateTime.UtcNow.AddDays(-WebConfigSettings.NewsletterReVerifcationAfterDays))
                    {
                        // if the user never verifed before and its been at least x days go ahead and send another chance to verify
                        needToSendVerification = true;
                        // TODO: maybe we should log this in case some spam script is using the same email over and over
                        // or maybe we should add a verification sent count on subscription
                    }
                }
            }

            if (needToSendVerification)
            {
                string verificationTemplate = ResourceHelper.GetMessageTemplate(SiteUtils.GetDefaultCulture(), "NewsletterVerificationEmailMessage.config");
                string confirmLink          = siteRoot + "/eletter/Confirm.aspx?s=" + s.SubscribeGuid.ToString();
                string messageBody          = verificationTemplate.Replace("{NewsletterName}", letter.Title).Replace("{ConfirmationLink}", confirmLink).Replace("{SiteLink}", siteRoot);
                string subject = string.Format(CultureInfo.InvariantCulture, Resource.NewsletterVerifySubjectFormat, letter.Title);

                EmailMessageTask messageTask = new EmailMessageTask(SiteUtils.GetSmtpSettings());
                messageTask.SiteGuid = siteSettings.SiteGuid;
                if (letter.FromAddress.Length > 0)
                {
                    messageTask.EmailFrom = letter.FromAddress;
                }
                else
                {
                    messageTask.EmailFrom = siteSettings.DefaultEmailFromAddress;
                }
                messageTask.EmailTo  = email;
                messageTask.Subject  = subject;
                messageTask.TextBody = messageBody;


                messageTask.QueueTask();
                WebTaskManager.StartOrResumeTasks();
            }
        }
示例#55
0
 public UserSignInEventArgs(SiteUser siteUser)
 {
     _siteUser = siteUser;
 }
示例#56
0
        private void btnUpdate_Click(object sender, EventArgs e)
        {
            if (!Page.IsValid)
            {
                return;
            }

            GalleryImage galleryImage;

            if (moduleId > -1)
            {
                if (itemId > -1)
                {
                    galleryImage = new GalleryImage(moduleId, itemId);
                }
                else
                {
                    galleryImage = new GalleryImage(moduleId);
                }

                if (galleryImage.ModuleId != moduleId)
                {
                    SiteUtils.RedirectToAccessDeniedPage(this);
                    return;
                }

                Module module = GetModule(moduleId, Gallery.FeatureGuid);
                galleryImage.ModuleGuid = module.ModuleGuid;

                galleryImage.ContentChanged += new ContentChangedEventHandler(galleryImage_ContentChanged);

                int displayOrder;
                if (!Int32.TryParse(txtDisplayOrder.Text, out displayOrder))
                {
                    displayOrder = -1;
                }

                if (displayOrder > -1)
                {
                    galleryImage.DisplayOrder = displayOrder;
                }

                galleryImage.WebImageHeight  = config.WebSizeHeight;
                galleryImage.WebImageWidth   = config.WebSizeWidth;
                galleryImage.ThumbNailHeight = config.ThumbnailHeight;
                galleryImage.ThumbNailWidth  = config.ThumbnailWidth;
                galleryImage.Description     = edDescription.Text;
                galleryImage.Caption         = txtCaption.Text;
                galleryImage.UploadUser      = Context.User.Identity.Name;
                SiteUser siteUser = SiteUtils.GetCurrentSiteUser();
                if (siteUser != null)
                {
                    galleryImage.UserGuid = siteUser.UserGuid;
                }

                // as long as javascript is available this code should never execute
                // because the standard file input ir replaced by javascript and the file upload happens
                // at the service url /ImageGallery/upload.ashx
                // this is fallback implementation

                if (uploader.HasFile)
                {
                    string ext = Path.GetExtension(uploader.FileName);
                    if (!SiteUtils.IsAllowedUploadBrowseFile(ext, ".jpg|.gif|.png|.jpeg"))
                    {
                        lblMessage.Text = GalleryResources.InvalidFile;

                        return;
                    }

                    string newFileName  = Path.GetFileName(uploader.FileName).ToCleanFileName(WebConfigSettings.ForceLowerCaseForUploadedFiles);
                    string newImagePath = VirtualPathUtility.Combine(fullSizeImageFolderPath, newFileName);
                    if (galleryImage.ImageFile == newFileName)
                    {
                        // an existing gallery image delete the old one
                        fileSystem.DeleteFile(newImagePath);
                    }
                    else
                    {
                        // this is a new galleryImage instance, make sure we don't use the same file name as any other instance
                        int i = 1;
                        while (fileSystem.FileExists(VirtualPathUtility.Combine(fullSizeImageFolderPath, newFileName)))
                        {
                            newFileName = i.ToInvariantString() + newFileName;
                            i          += 1;
                        }
                    }
                    newImagePath = VirtualPathUtility.Combine(fullSizeImageFolderPath, newFileName);

                    if (galleryImage.ItemId > -1)
                    {
                        //updating with a new image so delete the previous version
                        GalleryHelper.DeleteImages(galleryImage, fileSystem, imageFolderPath);
                    }


                    //using (Stream s = flImage.FileContent)
                    //{
                    //    fileSystem.SaveFile(newImagePath, s, flImage.ContentType, true);
                    //}
                    using (Stream s = uploader.FileContent)
                    {
                        fileSystem.SaveFile(newImagePath, s, IOHelper.GetMimeType(Path.GetExtension(ext).ToLower()), true);
                    }



                    galleryImage.ImageFile     = newFileName;
                    galleryImage.WebImageFile  = newFileName;
                    galleryImage.ThumbnailFile = newFileName;
                    galleryImage.Save();
                    GalleryHelper.ProcessImage(galleryImage, fileSystem, imageFolderPath, uploader.FileName, config.ResizeBackgroundColor);

                    CurrentPage.UpdateLastModifiedTime();
                    CacheHelper.ClearModuleCache(moduleId);

                    SiteUtils.QueueIndexing();
                    if (hdnReturnUrl.Value.Length > 0)
                    {
                        WebUtils.SetupRedirect(this, hdnReturnUrl.Value);
                        return;
                    }
                }
                else // not hasfile
                {       //updating a previously uploaded image
                    if (itemId > -1)
                    {
                        if (galleryImage.Save())
                        {
                            CurrentPage.UpdateLastModifiedTime();
                            CacheHelper.ClearModuleCache(moduleId);
                            SiteUtils.QueueIndexing();
                            if (newItem)
                            {
                                string thisUrl = SiteRoot + "/ImageGallery/EditImage.aspx?pageid="
                                                 + pageId.ToInvariantString()
                                                 + "&mid=" + moduleId.ToInvariantString()
                                                 + "&ItemID=" + galleryImage.ItemId.ToInvariantString();

                                WebUtils.SetupRedirect(this, thisUrl);
                                return;
                            }
                            else
                            {
                                if (hdnReturnUrl.Value.Length > 0)
                                {
                                    WebUtils.SetupRedirect(this, hdnReturnUrl.Value);
                                    return;
                                }

                                WebUtils.SetupRedirect(this, SiteUtils.GetCurrentPageUrl());
                            }
                        }
                    }
                }
            }
        }
    /// <summary>
    /// Get a page's worth of Users listings
    /// </summary>
    /// <param name="onlineUsers"></param>
    /// <param name="pageToRequest">Page # we are requesting (1 based)</param>
    /// <param name="totalNumberPages">Total # of pages of data that Server can return us</param>
    private void ExecuteRequest_ForPage(List<SiteUser> onlineUsers, int pageToRequest, out int totalNumberPages)
    {
        int pageSize = _onlineUrls.PageSize;
        var urlQuery = UrlForUsersListRequest(pageSize, pageToRequest);

        var webRequest = CreateLoggedInWebRequest(urlQuery);
        webRequest.Method = "GET";

        _onlineSession.StatusLog.AddStatus("Web request: " + urlQuery, -10);
        var response = GetWebReponseLogErrors(webRequest, "get users list");
        var xmlDoc = GetWebResponseAsXml(response);

        //Get all the user nodes
        var nsManager = XmlHelper.CreateTableauXmlNamespaceManager("iwsOnline");
        var users = xmlDoc.SelectNodes("//iwsOnline:user", nsManager);

        //Get information for each of the data sources
        foreach (XmlNode itemXml in users)
        {
            try
            {
                var ds = new SiteUser(itemXml);
                onlineUsers.Add(ds);
            }
            catch
            {
                AppDiagnostics.Assert(false, "User parse error");
                _onlineSession.StatusLog.AddError("Error parsing user: "******"//iwsOnline:pagination", nsManager),
            pageSize);
    }
示例#58
0
        protected void SiteLogin_LoggedIn(object sender, EventArgs e)
        {
            IUserBAL itemBAL = new UserBAL();
            User item = itemBAL.GetUserByLoginName(this.UserName.Trim());

            SiteUser siteUser = new SiteUser();
            siteUser.LoginName = item.UserID;
            siteUser.Name = item.UserName;
            siteUser.UserId = item.UserGuid;

            string cookieName = "siteguid" + SiteUtils.GetSiteId();
            CookieHelper.SetCookie(cookieName, siteUser.UserId.ToString(), this.RememberMeSet);

            if (siteUser.UserId == Guid.Empty)
                return;

            UserSignInEventArgs u = new UserSignInEventArgs(siteUser);
            OnUserSignIn(u);
        }