示例#1
0
        public async Task Delete([FromBody] DeleteAccountRequestModel model)
        {
            var user = await _userService.GetUserByPrincipalAsync(User);

            if (user == null)
            {
                throw new UnauthorizedAccessException();
            }

            if (!await _userService.CheckPasswordAsync(user, model.MasterPasswordHash))
            {
                ModelState.AddModelError("MasterPasswordHash", "Invalid password.");
                await Task.Delay(2000);
            }
            else
            {
                var result = await _userService.DeleteAsync(user);

                if (result.Succeeded)
                {
                    return;
                }

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

            throw new BadRequestException(ModelState);
        }
        public async Task PostDelete([FromBody] DeleteAccountRequestModel model)
        {
            var user = _currentContext.User;

            if (!await _userManager.CheckPasswordAsync(user, model.MasterPasswordHash))
            {
                ModelState.AddModelError("MasterPasswordHash", "Invalid password.");
                await Task.Delay(2000);
            }
            else
            {
                var result = await _userService.DeleteAsync(user);

                if (result.Succeeded)
                {
                    return;
                }

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

            throw new BadRequestException(ModelState);
        }
示例#3
0
        public void RemoveMember(int memberId, DeleteAccountRequestModel model)
        {
            using (OrgCommEntities dbc = new OrgCommEntities(DBConfigs.OrgCommConnectionString))
            {
                OrgComm.Data.Models.Member member = dbc.Members.SingleOrDefault(r => (!r.DelFlag) && r.Id.Equals(memberId));

                if (member == null)
                {
                    throw new OrgException("Invalid profile");
                }

                if (!member.PasswordHash.Equals(GenerateHash(member.Salt, model.Password)))
                {
                    throw new OrgException("Incorrect password");
                }

                member.DelFlag = true;

                var tokens = dbc.Tokens.Where(r => r.MemberId.Equals(memberId));
                if (tokens.Count() > 0)
                {
                    dbc.Tokens.RemoveRange(tokens);
                }

                var devices = dbc.Devices.Where(r => r.MemberId.Equals(memberId));
                if (devices.Count() > 0)
                {
                    dbc.Devices.RemoveRange(devices);
                }

                new FriendBL().RemoveFriendByMemberId(member.Id);
                new GroupBL().LeaveAllGroupsByMemberId(member.Id);
                new UploadBL().RemoveFilesByMemberId(member.Id);
                new NoteBL().RemoveNoteByMemberId(member.Id);

                dbc.SaveChanges();
            }
        }
示例#4
0
        public ResultModel DeleteAccount(DeleteAccountRequestModel param)
        {
            ResultModel result = new ResultModel();

            try
            {
                int?memberId = IdentityHelper.GetMemberId();
                if (!memberId.HasValue)
                {
                    throw new OrgException("Invalid MemberId");
                }

                MemberBL bl = new MemberBL();

                bl.RemoveMember(memberId.Value, param);

                result.Status  = true;
                result.Message = "Your account has been deleted";
            }
            catch (OrgException oex)
            {
                result.Status  = false;
                result.Message = oex.Message;
            }
            catch (Exception ex)
            {
                result.Status  = false;
                result.Message = AppConfigs.InternalErrorMessage;

                if (AppConfigs.DebugInternalMessage)
                {
                    result.InternalMessage = ex.Message;
                }
            }

            return(result);
        }