public async Task <ActionResult> DeleteRole(string roleName)
        {
            try
            {
                var role = await roleManager.FindByNameAsync(roleName);

                if (role == null)
                {
                    var rs = new ListOfCustomMessages(msg: "این نقش وجود ندارد", msgTypeEnum: MsgTypeEnum.Error);
                    return(NotFound(rs));
                }

                var result = await roleManager.DeleteAsync(role);

                if (!result.Succeeded)
                {
                    throw new Exception(result.Errors.First().Description);
                }

                return(Ok(new ListOfCustomMessages("نقش " + roleName + " حذف شد", MsgTypeEnum.Success)));
            }
            catch (Exception ee)
            {
                Log.Error(ee.Message);
                return(BadRequest(new ListOfCustomMessages(ee)));
            }
        }
Exemple #2
0
 public ActionResult ChangeUserPass(ChangeUserPassDto changeUserPassDto)
 {
     try
     {
         var user   = userMgr.FindByNameAsync(userName).Result;
         var result = userMgr.ChangePasswordAsync(user, changeUserPassDto.OldPassword, changeUserPassDto.NewPassword).Result;
         if (!result.Succeeded)
         {
             throw new Exception(result.Errors.First().Description);
         }
         var rs = new ListOfCustomMessages()
         {
             new CustomMessage {
                 Message = "رمز عبور تغییر کرد"
             }
         };
         return(Ok(rs));
     }
     catch (Exception ee)
     {
         Log.Error(ee.Message);
         var rs = new ListOfCustomMessages()
         {
             new CustomMessage(ee)
         };
         return(BadRequest(rs));
     }
 }
        public IActionResult LockUser(string userName)
        {
            try
            {
                var user = userMgr.FindByNameAsync(userName).Result;
                if (user == null)
                {
                    var rs = new ListOfCustomMessages()
                    {
                        new CustomMessage {
                            Message = "این کاربر وجود ندارد", MsgTypeEnum = MsgTypeEnum.Error
                        }
                    };
                    return(BadRequest(rs));
                }


                if ((user.LockoutEnd != null) && (user.LockoutEnd > DateTimeOffset.Now))
                {
                    user.LockoutEnd = DateTimeOffset.Now;
                }
                else
                {
                    if (userName.ToLower() == "SuperAdmin".ToLower())
                    {
                        var rs = new ListOfCustomMessages()
                        {
                            new CustomMessage {
                                Message = "این کاربر قابل قفل شدن نیست", MsgTypeEnum = MsgTypeEnum.Error
                            }
                        };
                        return(BadRequest(rs));
                    }
                    user.LockoutEnd = DateTimeOffset.Now.AddYears(10);
                }

                var result = userMgr.UpdateAsync(user).Result;
                if (!result.Succeeded)
                {
                    throw new Exception(result.Errors.First().Description);
                }
                return(Ok());
            }
            catch (Exception ee)
            {
                Log.Error(ee.Message);
                var rs = new ListOfCustomMessages()
                {
                    new CustomMessage(ee)
                };
                return(BadRequest(rs));
            }
        }
        public IActionResult ResetUserPassword(UserForCreationDto us)
        {
            try
            {
                var user = userMgr.FindByNameAsync(us.UserName).Result;
                if (user == null)
                {
                    var rs = new ListOfCustomMessages()
                    {
                        new CustomMessage {
                            Message = "این کاربر وجود ندارد", MsgTypeEnum = MsgTypeEnum.Error
                        }
                    };

                    return(BadRequest(rs));
                }
                if (user.UserName.ToLower() == "SuperAdmin".ToLower())
                {
                    var rs = new ListOfCustomMessages()
                    {
                        new CustomMessage {
                            Message = "برای این کاربر شدنی نیست", MsgTypeEnum = MsgTypeEnum.Error
                        }
                    };

                    return(BadRequest(rs));
                }

                var token = userMgr.GeneratePasswordResetTokenAsync(user).Result;

                var result = userMgr.ResetPasswordAsync(user, token, us.Password).Result;
                if (!result.Succeeded)
                {
                    throw new Exception(result.Errors.First().Description);
                }
                return(Ok());
            }
            catch (Exception ee)
            {
                Log.Error(ee.Message);

                var rs = new ListOfCustomMessages()
                {
                    new CustomMessage(ee)
                };
                return(BadRequest(rs));
            }
        }
        public IActionResult DeleteAllClaimsWithGivenType(string userName, ClaimDto claim)
        {
            try
            {
                var user = userMgr.FindByNameAsync(userName).Result;
                if (user == null)
                {
                    var rs = new ListOfCustomMessages()
                    {
                        new CustomMessage {
                            Message = "این کاربر وجود ندارد", MsgTypeEnum = MsgTypeEnum.Error
                        }
                    };
                    return(NotFound(rs));
                }

                var claimsToDelete = db.VUsersClaims.Where(t => t.UserName.ToLower() == userName.ToLower()).Where(t => t.ClaimType.ToLower() == claim.ClaimType)
                                     .ToList().Select(t => new System.Security.Claims.Claim(type: claim.ClaimType, value: t.ClaimValue)).ToList();

                if (claimsToDelete.Count() == 0)
                {
                    var rs = new ListOfCustomMessages()
                    {
                        new CustomMessage {
                            Message = "چیزی پیدا نشد", MsgTypeEnum = MsgTypeEnum.Error
                        }
                    };
                    return(NotFound(rs));
                }
                var result = userMgr.RemoveClaimsAsync(user, claimsToDelete).Result;
                if (!result.Succeeded)
                {
                    throw new Exception(result.Errors.First().Description);
                }
                return(Ok());
            }
            catch (Exception ee)
            {
                Log.Error(ee.Message);
                var rs = new ListOfCustomMessages()
                {
                    new CustomMessage(ee)
                };
                return(BadRequest(rs));
            }
        }
        public IActionResult DeleteUser(string userName)
        {
            try
            {
                var user = userMgr.FindByNameAsync(userName).Result;
                if (user == null)
                {
                    var rs = new ListOfCustomMessages()
                    {
                        new CustomMessage {
                            Message = "این کاربر وجود ندارد", MsgTypeEnum = MsgTypeEnum.Error
                        }
                    };
                    return(BadRequest(rs));
                }
                if (userName.ToLower() == "SuperAdmin".ToLower())
                {
                    var rs = new ListOfCustomMessages()
                    {
                        new CustomMessage {
                            Message = "این کاربر قابل پاک شدن نیست", MsgTypeEnum = MsgTypeEnum.Error
                        }
                    };

                    return(BadRequest(rs));
                }

                var result = userMgr.DeleteAsync(user).Result;
                if (!result.Succeeded)
                {
                    throw new Exception(result.Errors.First().Description);
                }
                return(Ok());
            }
            catch (Exception ee)
            {
                Log.Error(ee.Message);

                var rs = new ListOfCustomMessages()
                {
                    new CustomMessage(ee)
                };
                return(BadRequest(rs));
            }
        }
        public IActionResult GetAllClaims(string userName)
        {
            var user = userMgr.FindByNameAsync(userName).Result;

            if (user == null)
            {
                var rs = new ListOfCustomMessages()
                {
                    new CustomMessage {
                        Message = "این کاربر وجود ندارد", MsgTypeEnum = MsgTypeEnum.Error
                    }
                };
                return(NotFound(rs));
            }
            var claims = userMgr.GetClaimsAsync(user).Result;

            return(Ok(claims));
        }
        public IActionResult CreateUser(UserForCreationDto us)
        {
            try
            {
                var user = userMgr.FindByNameAsync(us.UserName).Result;
                if (user != null)
                {
                    var rs = new ListOfCustomMessages()
                    {
                        new CustomMessage {
                            Message = "این کاربر قبلاً وجود دارد", MsgTypeEnum = MsgTypeEnum.Error
                        }
                    };
                    return(BadRequest(rs));
                }

                user = new ApplicationUser {
                    UserName = us.UserName, Email = "", EmailConfirmed = true,
                };

                var result = userMgr.CreateAsync(user, us.Password).Result;
                if (!result.Succeeded)
                {
                    throw new Exception(result.Errors.First().Description);
                }

                Log.Debug($" کاربر { us.UserName} ساخته شد");

                return(Ok());
            }
            catch (Exception ee)
            {
                Log.Error(ee.Message);
                var rs = new ListOfCustomMessages()
                {
                    new CustomMessage(ee)
                };
                return(BadRequest(rs));
            }
        }
        public async Task <ActionResult> AddRole(string roleName)
        {
            try
            {
                roleName = roleName.TrimEvelNull();
                if ((roleName == "") || (roleName != roleName.ReplaceAllNonAlphaNumericExceptAllowableListOFCharacters(allowableListOFCharacters: "_")))
                {
                    throw new Exception("این نام نقش مجاز نمی باشد");
                }

                bool x = await roleManager.RoleExistsAsync(roleName);

                if (!x)
                {
                    var role   = new IdentityRole(roleName);
                    var result = await roleManager.CreateAsync(role);

                    if (!result.Succeeded)
                    {
                        throw new Exception(result.Errors.First().Description);
                    }
                }
                else
                {
                    var rs = new ListOfCustomMessages(msg: "این نقش قبلا وجود دارد", msgTypeEnum: MsgTypeEnum.Error);
                    return(BadRequest(rs));
                }

                return(Ok(new ListOfCustomMessages("نقش " + roleName + " ساخته شد", msgTypeEnum: MsgTypeEnum.Success)));
            }
            catch (Exception ee)
            {
                Log.Error(ee.Message);
                return(BadRequest(new ListOfCustomMessages(ee)));
            }
        }
        public IActionResult CreateClaim(ClaimDto claim, string userName)
        {
            try
            {
                if (claim.ClaimType == "" || claim.ClaimValue == "")
                {
                    var rs = new ListOfCustomMessages()
                    {
                        new CustomMessage {
                            Message = "هر دو متغیر نوع و مقدار یک کلیم باید غیر خالی باشند", MsgTypeEnum = MsgTypeEnum.Error
                        }
                    };
                    return(BadRequest(rs));
                }
                var user = userMgr.FindByNameAsync(userName).Result;
                if (user == null)
                {
                    var rs = new ListOfCustomMessages()
                    {
                        new CustomMessage {
                            Message = "این کاربر وجود ندارد", MsgTypeEnum = MsgTypeEnum.Error
                        }
                    };
                    return(NotFound(rs));
                }

                var cl = new System.Security.Claims.Claim(claim.ClaimType, claim.ClaimValue);

                if (db.VUsersClaims
                    .Any(t =>
                         (t.UserName.ToLower() == userName.ToLower() &&
                          (t.ClaimType.ToLower() == claim.ClaimType.ToLower())
                         ))
                    )
                {
                    var rs = new ListOfCustomMessages()
                    {
                        new CustomMessage {
                            Message = "این کلیم برای این کاربر قبلا موجود می باشد ، ابتدا آن را پاک کنید", MsgTypeEnum = MsgTypeEnum.Error
                        }
                    };
                    return(BadRequest(rs));
                }

                var result = userMgr.AddClaimAsync(user, cl).Result;
                if (!result.Succeeded)
                {
                    throw new Exception(result.Errors.First().Description);
                }

                return(Ok());
            }
            catch (Exception ee)
            {
                Log.Error(ee.Message);
                var rs = new ListOfCustomMessages()
                {
                    new CustomMessage(ee)
                };
                return(BadRequest(rs));
            }
        }