/// <summary> /// Текущий пользователь принимает приглашение /// </summary> /// <returns>Страница досок</returns> /// TODO: OrganizationPermission - без проверки принадлежности к организации, так как списки сотрудников кешируются public RedirectToRouteResult AcceptInvite(int id) { int organizationId = id; // Текущий пользователь принимает приглашение Utility.Invites.AcceptInvite(organizationId, Utility.Authentication.UserId); // Высылаем уведомление всем админам огранизации, чтобы они повключали пользователей на доски List <IUser> users = Utility.Organizations.GetEmployees(organizationId) .Where(x => x.Settings.GetUserRole().HasTheFlag(EmployeeRole.Administrator)) .Select(x => x.User) .ToList(); IOrganization organization = Utility.Organizations.Get(organizationId); foreach (IUser user in users) { string subj = "Пользователь " + Utility.Users.CurrentUser.Nick + " включен в огранизацию '" + organization.Name + "'"; string rawMessage = subj + "<br/>" + "Теперь вы можете добавить его как учасника на ваши доски."; MailsManager.SendMail(user, subj, rawMessage); } return(RedirectToAction("Index", "Boards")); }
public ViewResult RestorePassword(string loginOrEmail) { #region Валидация if (loginOrEmail.IsNullOrEmpty()) { ModelState.AddModelError("loginOrEmail", "Вы ничего не ввели."); } IUser user = Utility.Users.Get(loginOrEmail) ?? Utility.Users.GetByEmail(loginOrEmail); if (user == null) { ModelState.AddModelError("loginOrEmail", "Такой пользователь не зарегистрирован."); } #endregion if (ModelState.IsValid) { string url = Url.Action("NewPassword", "User", new { id = user.ConfimKey }, "http"); // TODO: более развернутое сообщение, с учетом того, что форма доступна всем и можно ввести чужой имейл. string message = "<p>Вы воспользовались функцией восстановления пароля.</p>" + "<p>Пройдите по ссылке <a href='{0}'>{0}</a> и задайте новый пароль.</p>".Params(url); MailsManager.SendMail(user, "Установка нового пароля", message); ViewData.Model = "Письмо с инструкциями выслано на Ваш ящик."; } return(View()); }
private string InviteParticipant(int organizationId, string email) { if (!email.IsValidEmail()) { ViewData.ModelState.AddModelError("EMail", "Формат email не верный: " + email); } if (ViewData.ModelState.IsValid) { // TODO: потестить перед презинтацией IUser user = Utility.Users.GetByEmail(email); if (user != null) { IOrganization organization = Utility.Organizations.Get(organizationId); // Если пользощватель существует, то добавляем его if (Utility.Organizations.AddUser(organization, user)) { // И пердлагаем ему подтвердить присутсвие на доске на странице досок string message = @"{0} приглашает вас присоединиться к <a href='{1}'>{2}</a>.<br/>Вы можете подтвердить или отклонить придложение на <a href='{3}'>этой</a> ({3}) станице." .Params(Utility.Users.CurrentUser.Nick, // 0 Url.Action("Index", "Organization", new { id = organizationId }, "http"), // 1 organization.Name, // 2 Url.Action("Index", "Boards", null, "http") // 3 ); MailsManager.SendMail(user, "Приглашение TimeZ.org", message); } } else { string siteUrl = Url.Action("Index", "Home", null, "http"); string inviteCode = Utility.Invites.CreateNewInvite(organizationId, email, Utility.Authentication.UserId); string regUrl = Url.Action("Register", "User", new { id = inviteCode }, "http"); string message = string.Format(@" {2} приглашает Вас на сайт <a href='{0}'>TimeZ.org</a>.<br/> Пройдите по ссылке <a href='{1}'>{1}</a>, что бы зарегестрироваться на сайте.", siteUrl, regUrl, Utility.Users.CurrentUser.Nick ); MailsManager.SendMail(email, "Приглашение TimeZ.org", message); } return(user == null ? "Приглашение отослано на " + email + ", пользователь должен зарегестрироваться на сайте." : "Приглашение отослано на " + email + ", пользователь должен подтвердить приглашение."); } return(null); }
/// <summary> /// Ежедневная профилактика /// </summary> public string DailyJob() { // Удаляем неподтвержденных IEnumerable <IUser> users = Utility.Users.RemoveUnconfirmed(7); string siteUrl = Url.Action("Index", "Home", null, "http"); foreach (IUser user in users) { const string message = "<p>К сожалению, Ваш аккаунт был удален в связи с не подтвержденной регистрацией. :(</p>" + "<p>Но мы будем рады, если Вы повторно зарегистрируетесь на нашем <a href='{0}'>сайте</a>.</p>"; MailsManager.SendMail(user, "Удаление аккаунта", message.Params(siteUrl)); } return("OK"); }