Exemple #1
0
        /// <summary>
        /// 【11】获取组名
        /// </summary>
        /// <returns>共有2列,Name和Code</returns>
        public static DataTable GetGroup()
        {
            DataTable dt = new DataTable();

            dt.Columns.Add("Name");
            dt.Columns.Add("Code");
            IEdmUserMgr7   UsrMgr;
            IEdmUserGroup8 mngmtGroup;

            if (vault == null)
            {
                vault = new EdmVault5();
            }
            if (!vault.IsLoggedIn)
            {
                vault.LoginAuto(VaultName, new Control().Handle.ToInt32());
            }
            UsrMgr = (IEdmUserMgr7)vault;

            //Traverse groups
            //string Groups = "";
            IEdmPos5 UserGroupPos = default(IEdmPos5);

            UserGroupPos = UsrMgr.GetFirstUserGroupPosition();
            while (!UserGroupPos.IsNull)
            {
                mngmtGroup = (IEdmUserGroup8)UsrMgr.GetNextUserGroup(UserGroupPos);
                //Groups = Groups + mngmtGroup.Name + "\n";
                DataRow dr = dt.NewRow();
                dr["Name"] = mngmtGroup.Name;
                dr["Code"] = mngmtGroup.ID;
                dt.Rows.Add(dr);
            }
            return(dt);
        }
        public async Task <IActionResult> Login(string username, string password)
        {
            if (ModelState.IsValid)
            {
                var user = await UsrMgr.FindByNameAsync(username);

                if (user != null && !user.EmailConfirmed &&
                    (await UsrMgr.CheckPasswordAsync(user, password)))
                {
                    ModelState.AddModelError(string.Empty, "Email ainda não confirmado");
                    return(View());
                }

                var result = await SignInMgr.PasswordSignInAsync(username,
                                                                 password, false, false);

                if (result.Succeeded)
                {
                    return(RedirectToAction("Index", "Post"));
                }

                ModelState.AddModelError(string.Empty, "Tentativa de login inválido");
            }

            return(View());
        }
        public async Task <IActionResult> ResetPassword(ResetPasswordViewModel model)
        {
            Console.WriteLine(model.Email);
            Console.WriteLine(model.Token);

            if (ModelState.IsValid)
            {
                var user = await UsrMgr.FindByEmailAsync(model.Email);

                if (user != null)
                {
                    var result = await UsrMgr.ResetPasswordAsync(user, model.Token, model.Password);

                    if (result.Succeeded)
                    {
                        return(View("ResetPasswordConfirmation"));
                    }

                    foreach (var error in result.Errors)
                    {
                        ModelState.AddModelError("", error.Description);
                    }
                    return(View(model));
                }

                ModelState.AddModelError("", "Usuário não encontrado!");

                return(View(model));
            }

            ModelState.AddModelError("", "Você forneceu algum dado inválido");

            return(View(model));
        }
        public async Task <IActionResult> ConfirmEmail(string userId, string token)
        {
            if (userId == null || token == null)
            {
                return(RedirectToAction("Index", "Post"));
            }

            var user = await UsrMgr.FindByIdAsync(userId);

            if (user == null)
            {
                ViewBag.ErrorMessage = $"O Id de usuário {userId} é inválido";
                return(View("Error"));
            }

            var result = await UsrMgr.ConfirmEmailAsync(user, token);

            if (result.Succeeded)
            {
                ViewBag.Message = "Email confirmado com sucesso!";

                return(View("Messages"));
            }

            ViewBag.ErrorMessage = "Email não pôde ser confirmado :(";
            return(View("Error"));
        }
        public async Task <IActionResult> Register(AppUser user, string password)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    var result = await UsrMgr.CreateAsync(user, password);

                    if (result.Succeeded)
                    {
                        var token = await UsrMgr.GenerateEmailConfirmationTokenAsync(user);

                        var confirmationLink = Url.Action("ConfirmEmail", "Account",
                                                          new { userId = user.Id, token = token }, Request.Scheme);

                        logger.Log(LogLevel.Warning, confirmationLink);


                        string emailHtmlBody = "<!DOCTYPE html>" +
                                               "<html>" +
                                               "<head>" +
                                               "<title></title>" +
                                               "</head>" +
                                               "<body>" +
                                               "Clique no link para confirmar seu email:" +
                                               "<br/>" +
                                               "<a href='" + confirmationLink.ToString() + "'>Confirmar email</a>" +
                                               "</body>" +
                                               "</html>";

                        SendEmail.Send(user.Email, "BlogAspNet - Confirmar email", emailHtmlBody);

                        ViewBag.MessageTitle = "Registro feito com sucesso!";
                        ViewBag.MessageBody  = "Antes que você possa fazer login, por favor, confirme " +
                                               "seu email clicando no link de confirmação que mandamos para seu email";
                        return(View("ConfirmEmail"));
                    }

                    foreach (var error in result.Errors)
                    {
                        ModelState.AddModelError(string.Empty, error.Description);
                    }

                    return(View());
                }
                catch (Exception ex)
                {
                    ModelState.AddModelError("", ex.Message);

                    return(View());
                }
            }

            return(View());
        }
Exemple #6
0
        /// <summary>
        /// 【11.1】获取组成员
        /// </summary>
        /// <param name="GroupID">组ID</param>
        /// <returns>共有2列,ID/Name/FullName</returns>
        public static DataTable GetGroupMember(int GroupID)
        {
            DataTable dt = new DataTable();

            dt.Columns.Add("ID");
            dt.Columns.Add("Name");
            dt.Columns.Add("FullName");
            IEdmUserMgr7   UsrMgr;
            IEdmUserGroup8 mngmtGroup;
            IEdmUser9      user;
            IEdmPos5       UserPos = default(IEdmPos5);

            if (vault == null)
            {
                vault = new EdmVault5();
            }
            if (!vault.IsLoggedIn)
            {
                vault.LoginAuto(VaultName, new Control().Handle.ToInt32());
            }
            UsrMgr = (IEdmUserMgr7)vault;

            IEdmPos5 UserGroupPos = default(IEdmPos5);

            UserGroupPos = UsrMgr.GetFirstUserGroupPosition();
            while (!UserGroupPos.IsNull)
            {
                mngmtGroup = (IEdmUserGroup8)UsrMgr.GetNextUserGroup(UserGroupPos);
                if (mngmtGroup.ID == GroupID)
                {
                    UserPos = mngmtGroup.GetFirstUserPosition();
                    while (!UserPos.IsNull)
                    {
                        user = (IEdmUser9)mngmtGroup.GetNextUser(UserPos);
                        //Users = Users + " " + user.Name + "\n";
                        DataRow dr = dt.NewRow();
                        dr["ID"]       = user.ID;
                        dr["Name"]     = user.Name;
                        dr["FullName"] = user.FullName;
                        dt.Rows.Add(dr);
                    }
                }
            }
            return(dt);
        }
        public async Task <IActionResult> ForgotPassword(ForgotPasswordViewModel model)
        {
            if (ModelState.IsValid)
            {
                var user = await UsrMgr.FindByEmailAsync(model.Email);

                if (user != null && await UsrMgr.IsEmailConfirmedAsync(user))
                {
                    var token = await UsrMgr.GeneratePasswordResetTokenAsync(user);

                    var passwordResetLink = Url.Action("ResetPassword", "Account",
                                                       new { email = model.Email, token = token }, Request.Scheme);

                    logger.Log(LogLevel.Warning, passwordResetLink);

                    string emailHtmlBody = "<!DOCTYPE html>" +
                                           "<html>" +
                                           "<head>" +
                                           "<title></title>" +
                                           "</head>" +
                                           "<body>" +
                                           "Clique no link para redefinir sua senha:" +
                                           "<br/>" +
                                           "<a href='" + passwordResetLink.ToString() + "'>Redefinir senha</a>" +
                                           "</body>" +
                                           "</html>";

                    SendEmail.Send(model.Email, "BlogAspNet - Redefinir senha", emailHtmlBody);

                    return(View("ForgotPasswordConfirmation"));
                }

                ViewBag.Message = "Usuário não cadastrado ou email do usuário não foi confirmado!";
                return(View());
            }

            return(View(model));
        }