public static UserResult MapUserResult(ApplicationUser us, string siteId, SiteUserDbModel siteUserDbModel) { var roles = GetRoles(us, siteId, siteUserDbModel); var user = new UserResult() { UserId = siteUserDbModel.UserId, SiteUserId = siteUserDbModel.Id, MailConfirmed = us?.EmailConfirmed ?? false, IsEmailNotif = siteUserDbModel.IsEmailNotif, Mail = siteUserDbModel.Mail, FirstName = siteUserDbModel.FirstName, LastName = siteUserDbModel.LastName, FullName = siteUserDbModel.FullName, Civility = siteUserDbModel.Civility, Birthdate = siteUserDbModel.Birthdate, Comments = siteUserDbModel.Comments, Tags = siteUserDbModel.Tags, Roles = roles, }; return(user); }
private static async Task SendEmailAsync(SiteMap.Site siteInfo, IEmailService _emailService, SiteUserDbModel friendUserDb, ApplicationUser userDb, IList <Element> elements, string siteId) { var model = new MailInvitation() { UserNameSender = userDb.FullName, UserName = friendUserDb.FullName, SiteName = siteInfo.Name, SiteUrl = siteInfo.Url, }; var title = FreeBusinessModule.GetTitle(elements); var identityMessage = new MailMessage(); identityMessage.Subject = new StringTemplateRenderer().Render(title, model); var bodyTemplate = new StringBuilder(); foreach (var element in elements) { bodyTemplate.Append("<div>"); if (element.Type == "p") { bodyTemplate.Append(element.Data); } else if (element.Type == "hr") { bodyTemplate.Append("<hr />"); } else if (SaveFreeCommand.IsFileElementType(element.Type)) { var files = JsonConvert.DeserializeObject <List <DataFileInput> >(element.Data); foreach (var dataFile in files) { var uri = $@"{siteInfo.Url}/api/file/get/{siteId}/{dataFile.Id}/{"ImageThumb"}/{UrlHelper .NormalizeTextForUrl(dataFile.Name)}"; bodyTemplate.Append("<div><img src=\"" + uri + "\" /></div>"); } } bodyTemplate.Append("</div>"); } identityMessage.Body = new StringTemplateRenderer().Render(bodyTemplate.ToString(), model); identityMessage.Destination = friendUserDb.Mail; await _emailService.SendAsync(identityMessage); }
public static async Task <SaveUserResult> SaveUserAsync(SiteUserService _siteUserService, UserService _userService, ApplicationUser creatorUserDb, SaveSiteUserInput saveSiteUser) { var result = new SaveUserResult(); var siteId = saveSiteUser.SiteId; var mail = saveSiteUser.Mail.ToLower().Trim(); SiteUserDbModel siteUserDbModel = null; var siteUserId = saveSiteUser.SiteUserId; if (String.IsNullOrEmpty(siteUserId)) { // 1: Creation siteUserDbModel = await _siteUserService.FindByEmailAsync(siteId, mail); if (siteUserDbModel != null) { result.Error = "user_email_already_added"; result.IsSuccess = false; result.SiteUserId = siteUserDbModel.Id; return(result); } siteUserDbModel = new SiteUserDbModel(); siteUserDbModel.SiteId = siteId; } else { // 1: Mise à jour siteUserDbModel = await _siteUserService.FindAsync(siteUserId); var siteUserDbModelCheck = await _siteUserService.FindByEmailAsync(siteId, mail); if (siteUserDbModelCheck != null && siteUserDbModel.Id != siteUserDbModelCheck.Id) { result.Error = "user_email_already_added"; result.IsSuccess = false; result.SiteUserId = siteUserDbModel.Id; return(result); } } // On doit créer le userSite siteUserDbModel.Mail = mail; siteUserDbModel.FirstName = saveSiteUser.FirstName; siteUserDbModel.LastName = saveSiteUser.LastName; siteUserDbModel.Birthdate = saveSiteUser.Birthdate; siteUserDbModel.Tags = saveSiteUser.Tags; siteUserDbModel.Comments = saveSiteUser.Comments; siteUserDbModel.Civility = saveSiteUser.Civility; siteUserDbModel.IsEmailNotif = saveSiteUser.IsEmailNotif; siteUserDbModel.FlaggedRoles = saveSiteUser.Roles; var updatedUserDb = await _userService.FindApplicationUserByEmailAsync(mail); if (updatedUserDb != null) { siteUserDbModel.UserId = updatedUserDb.Id; } await _siteUserService.SaveAsync(siteUserDbModel); result.SiteUserId = siteUserDbModel.Id; var resultManageRoleAdministrator = await ManageRolesAsync(_userService, saveSiteUser, updatedUserDb, siteId, SiteUserRole.Administrator); switch (resultManageRoleAdministrator) { case "user_updated": result.SendMailAdmin = new SendMailAdmin() { Mail = mail, UserCreated = updatedUserDb, SiteId = siteId, UserCreator = creatorUserDb }; break; case "no_user_found": result.SendMailAdmin = new SendMailAdmin() { Mail = mail, SiteId = siteId, UserCreator = creatorUserDb }; result.Error = "no_user_found"; break; } var resultManageRoleUserPrivate = await ManageRolesAsync(_userService, saveSiteUser, updatedUserDb, siteId + "_private_user", SiteUserRole.PrivateUser); return(result); }
public static IList <SiteUserRole> GetRoles(ApplicationUser applicationUser, string siteId, SiteUserDbModel siteUserDbModel) { IList <SiteUserRole> roles = new List <SiteUserRole>(); if (applicationUser != null) { var userRoles = (SiteUserRole[])Enum.GetValues(typeof(SiteUserRole)); foreach (var siteUserRole in userRoles) { var role = UserSecurity.MapRole(siteId, siteUserRole); if (applicationUser.Roles.Count(c => c == role) > 0) { roles.Add(siteUserRole); } } } if (siteUserDbModel != null && siteUserDbModel.FlaggedRoles != null) { foreach (var siteUserRole in siteUserDbModel.FlaggedRoles) { if (!roles.Contains(siteUserRole)) { roles.Add(siteUserRole); } } } return(roles); }
private static async Task SendEmailAsync(SiteMap.Site siteInfo, IEmailService _emailService, SiteUserDbModel friendUserDb, ApplicationUser userDb) { var model = new MailInvitation() { UserNameSender = userDb.FullName, UserName = friendUserDb.FullName, SiteName = siteInfo.Name, SiteUrl = siteInfo.Url, }; var identityMessage = new MailMessage(); identityMessage.Subject = string.Format("[{0}] {1} vous invite à vous inscrire sur le site", model.SiteName, model.UserNameSender); identityMessage.Body = new StringTemplateRenderer().Render(ResourcesLoader.Load(Path.Combine("Sites", "Core", "Renderers", "MailInvitation.st")) , model); identityMessage.Destination = friendUserDb.Mail; await _emailService.SendAsync(identityMessage); }