Example #1
0
        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);
        }
Example #4
0
        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);
        }