//create account's security Database
 public void CreateSecurity(AccountSecurity accountSecurity)
 {
     if (accountSecurity != null)
     {
         _context.AccountSecurities.Add(accountSecurity);
         _context.SaveChanges();
     }
 }
Exemple #2
0
        public void UpdateSecurity(int accountId, bool tfa, bool loginAlerts)
        {
            AccountSecurity accountSecurity = _context.AccountSecurities.FirstOrDefault(p => p.AccountId == accountId);

            if (accountSecurity != null)
            {
                accountSecurity.TwoFactoryAuth = tfa;
                accountSecurity.LoginAlerts    = loginAlerts;

                _context.SaveChanges();
            }
        }
Exemple #3
0
 private void LoadSecurity()
 {
     this.cboSecurity.Items.Clear();
     foreach (string str in AccountSecurity.MaxSecurityLevel(Global.GlobalAccount.Security))
     {
         ListItem listItem = new ListItem();
         listItem = new ListItem()
         {
             Text = str
         };
         this.cboSecurity.Items.Add(listItem);
     }
 }
Exemple #4
0
        public void TestIsPasswordComplex()
        {
            const string testPassword1 = "donthackmeplox";
            const string testPassword2 = "tHisIs4P4ssw0rd!";

            bool result1 = AccountSecurity.IsPasswordComplex(testPassword1);

            Assert.AreEqual(false, result1, "Unable to check password complexity for insecure password.");

            bool result2 = AccountSecurity.IsPasswordComplex(testPassword2);

            Assert.AreEqual(true, result2, "Unable to check password complexity for secure password.");
        }
Exemple #5
0
        private void SetData()
        {
            Image image = Utilities.ByteArrayToImage(this.sRecord.dRecord.Thumbnail);

            this.Thumbnail.SizeMode = PictureBoxSizeMode.CenterImage;
            if (image.Height >= 137 || image.Width >= 80)
            {
                this.Thumbnail.SizeMode = PictureBoxSizeMode.StretchImage;
            }
            this.Thumbnail.Image            = image;
            this.RatingCtrl.Value           = (float)this.sRecord.dRecord.Rating;
            this.txtSetID.Text              = this.sRecord.dRecord.SetName;
            this.txtShortDesc.Text          = this.sRecord.dRecord.ShortDesc;
            this.lbl_DB_FileName.Text       = this.sRecord.dRecord.StoredFileName;
            this.lblTimestamp.Text          = string.Format("{0}", this.sRecord.dRecord.FileTimestamp);
            this.lblUploaded.Text           = string.Format("{0}", this.sRecord.dRecord.FileAddedTimestamp);
            this.lblSize.Text               = string.Format("{0} Bytes", this.sRecord.dRecord.FileSize);
            this.lblHashCode.Text           = string.Format("{0}", this.sRecord.dRecord.FileHashCode);
            this.lblGPS.Text                = (string.IsNullOrEmpty(this.sRecord.dRecord.GPS) ? "0.0,0.0" : this.sRecord.dRecord.GPS);
            this.label_0.Text               = (this.sRecord.dRecord.TrackingID == Guid.Empty ? "n/a" : this.sRecord.dRecord.TrackingID.ToString());
            this.lblFileExt.Text            = this.sRecord.dRecord.FileExtension;
            this.lblOriginalName.Text       = this.sRecord.dRecord.OriginalFileName;
            this.chk_PSIsIndefinite.Checked = this.sRecord.dRecord.IsIndefinite;
            this.lblMachineAccount.Text     = this.sRecord.dRecord.MachineAccount;
            this.lblDomain.Text             = this.sRecord.dRecord.UserDomain;
            this.lblMachineName.Text        = this.sRecord.dRecord.MachineName;
            this.label_1.Text               = this.sRecord.dRecord.LoginID;
            this.lblSourcePath.Text         = this.sRecord.dRecord.SourcePath;
            this.txtRMS.Text                = this.sRecord.dRecord.RMSNumber;
            this.txtCAD.Text                = this.sRecord.dRecord.CADNumber;
            this.chk_PSEvidence.Checked     = this.sRecord.dRecord.IsEvidence;
            using (RPM_Account rPMAccount = new RPM_Account())
            {
                Account account = rPMAccount.GetAccount(this.sRecord.dRecord.AccountId);
                this.lblAccountName.Text = string.Format("{0} • {1}", account.ToString(), account.BadgeNumber);
            }
            FormCtrl.SetComboItem(this.cboClass, this.sRecord.dRecord.Classification);
            FormCtrl.SetComboItem(this.cboSecurity, AccountSecurity.GetSecurityDesc(this.sRecord.dRecord.Security));
            bool?isPurged = this.sRecord.dRecord.IsPurged;

            if ((isPurged.GetValueOrDefault() ? false : isPurged.HasValue) && this.sRecord.dRecord.PurgeTimestamp.HasValue)
            {
                this.lblRestoreDate.Text  = this.sRecord.dRecord.PurgeTimestamp.ToString();
                this.RestorePanel.Visible = true;
            }
        }
Exemple #6
0
        private void SetSlideData()
        {
            try
            {
                this.lblNumber.Text    = Convert.ToString(this.sRecord.SlideNumber);
                this.lblTimestamp.Text = string.Format("{0}", this.sRecord.dRecord.FileTimestamp);
                this.Rating.Value      = (float)this.sRecord.dRecord.Rating;
                Image image = Utilities.ByteArrayToImage(this.sRecord.dRecord.Thumbnail);
                this.Thumbnail.Image        = image;
                this.label_0.Text           = this.sRecord.dRecord.SetName;
                this.lblClassification.Text = this.sRecord.dRecord.Classification;
                this.lblDesc.Text           = this.sRecord.dRecord.ShortDesc;
                this.sRecord.IsSet          = !string.IsNullOrEmpty(this.sRecord.dRecord.SetName);
                this.lblSecurity.BackColor  = Color.Transparent;
                switch (this.sRecord.dRecord.Security)
                {
                case SECURITY.TOPSECRET:
                    {
                        this.lblSecurity.ForeColor = Color.Yellow;
                        this.lblSecurity.BackColor = Color.Red;
                        break;
                    }

                case SECURITY.SECRET:
                {
                    this.lblSecurity.ForeColor = Color.White;
                    this.lblSecurity.BackColor = Color.Orange;
                    break;
                }

                case SECURITY.OFFICIAL:
                {
                    this.lblSecurity.ForeColor = Color.Black;
                    this.lblSecurity.BackColor = Color.Yellow;
                    break;
                }
                }
                this.lblSecurity.Text = AccountSecurity.GetSecurityDesc(this.sRecord.dRecord.Security);
                this.RetentionDisplay();
            }
            catch
            {
            }
        }
Exemple #7
0
 private void btn_Save_Click(object sender, EventArgs e)
 {
     this.sRecord.dRecord.Rating         = (int)this.RatingCtrl.Value;
     this.sRecord.dRecord.Classification = this.cboClass.Text;
     this.sRecord.dRecord.Security       = AccountSecurity.GetByString(this.cboSecurity.Text);
     this.sRecord.IsDescUpdate           = false;
     if (!this.sRecord.dRecord.ShortDesc.Equals(this.txtShortDesc.Text))
     {
         this.sRecord.IsDescUpdate = true;
     }
     this.sRecord.dRecord.ShortDesc    = this.txtShortDesc.Text;
     this.sRecord.dRecord.SetName      = this.txtSetID.Text;
     this.sRecord.dRecord.CADNumber    = (this.txtCAD.Text);
     this.sRecord.dRecord.RMSNumber    = (this.txtRMS.Text);
     this.sRecord.dRecord.IsIndefinite = this.chk_PSIsIndefinite.Checked;
     this.sRecord.dRecord.IsEvidence   = this.chk_PSEvidence.Checked;
     base.DialogResult = DialogResult.OK;
     base.Close();
 }
        public async Task <IActionResult> SignUp([FromBody] AccountSecurity model)
        {
            if (ModelState.IsValid)
            {
                if (VerifyUniqueEmail(model.Email))
                {
                    return(BadRequest(new
                    {
                        Message = "Email already exists"
                    }));
                }
                model.UserId   = Guid.NewGuid();
                model.Password = PasswordUseFull.GetHash(model.Password);

                for (int j = 0; j < model.Phones.Count; j++)
                {
                    model.Phones[j].UserId = model.UserId;
                }

                var createduser = _context.AccountSecurity.Add(model);

                if (createduser == null)
                {
                    return(BadRequest(new
                    {
                        Message = "Username or password invalid"
                    }));
                }

                _context.SaveChanges();
                account = new Account()
                {
                    CreatedOn    = DateTime.Now,
                    IdUser       = model.UserId,
                    LastLoginOn  = DateTime.Now,
                    LastUpdateOn = DateTime.Now
                };

                return(BuildSignUpResponse(model));
            }

            return(BadRequest(ModelState));
        }
        private JwtSecurityToken BuildToken(AccountSecurity userInfo)
        {
            var claims = new[]
            {
                new Claim(JwtRegisteredClaimNames.UniqueName, userInfo.Email),
                new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString())
            };

            var key        = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_configuration.GetSection("SecretKey").Value));
            var creds      = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);
            var expiration = DateTime.Now.AddMinutes(Convert.ToDouble(_configuration.GetSection("TokenExpiration").Value));

            JwtSecurityToken token = new JwtSecurityToken(
                issuer: "yourdomain.com",
                audience: "yourdomain.com",
                claims: claims,
                expires: expiration,
                signingCredentials: creds);

            return(token);
        }
        private IActionResult BuildSignUpResponse(AccountSecurity userInfo)
        {
            try
            {
                var token = BuildToken(userInfo);
                account.TokenId = new Guid(token.Id);
                _context.Account.Add(account);
                _context.SaveChanges();
                TokenInfo(token);

                return(Ok(new
                {
                    userId = account.IdUser,
                    creationOn = account.CreatedOn,
                    lastUpdateOn = account.LastUpdateOn,
                    lastLoginOn = account.LastLoginOn,
                    token = new JwtSecurityTokenHandler().WriteToken(token)
                }));
            }
            catch (Exception e)
            {
                return(BadRequest(e.Message));
            }
        }
        public IActionResult SignUp(RegisterViewModel model)
        {
            bool checkUser = _authRepository.CheckEmail(model.Email);
            bool number = _authRepository.CheckPhone(model.Phone);

            if (checkUser)
            {
                ModelState.AddModelError("Email", "Bu E-mail artiq movcuddur");
            }
            if (number)
            {
                ModelState.AddModelError("Phone", "Bu Nömrə artıq mövcuddur");
            }
            if (ModelState.IsValid)
            {
                var user = _mapper.Map<RegisterViewModel, Account>(model);
                user.Fullname = model.Name + " " + model.Surname;
                user.Token = Guid.NewGuid().ToString();
                user.Status = true;
                user.IsEmailVerified = false;

                //email verification code
                user.EmailActivationCode = Guid.NewGuid().ToString();

                _authRepository.Register(user);

                AccountSocialLink accountSocialLink = new AccountSocialLink
                {
                    AccountId = user.Id,
                    Status = true,
                    AddedBy = "System",
                    AddedDate = DateTime.Now
                };
                _authRepository.AddedSocial(accountSocialLink);

                //creating account's privacy Database
                AccountPrivacy accountPrivacy = new AccountPrivacy
                {
                    AccountId = user.Id,
                    Status = true,
                    AddedDate = DateTime.Now,
                    AddedBy = "System",
                    Phone = true,
                    Email = true,
                    LastLogin = true,
                    LastSeen = true,
                    Address = true,
                    Birthday = true,
                    ProfileImg = true,
                    SocialLink = true,
                    StatusText = true,
                    Website = true
                };
                _authRepository.CreatePrivacy(accountPrivacy);

                AccountSecurity accountSecurity = new AccountSecurity
                {
                    AccountId=user.Id,
                    TwoFactoryAuth = false,
                    LoginAlerts = false
                };
                _authRepository.CreateSecurity(accountSecurity);

                //send verification link email
                string userFullname = user.Name + " " + user.Surname;

                string link = HttpContext.Request.Scheme + "://" + Request.Host + "/account/verifyemail/" + user.EmailActivationCode;

                _emailService.VerificationEmail(user.Email, link, user.EmailActivationCode, userFullname);

                Response.Cookies.Append("token", user.Token, new Microsoft.AspNetCore.Http.CookieOptions
                {
                    HttpOnly = true,
                    Expires = DateTime.Now.AddYears(1)
                });

                return RedirectToAction("chat1", "pages");
            }

            return View(model);
        }
Exemple #12
0
        private void LogScan()
        {
            string   str      = Path.Combine(this.FilePath, this.DocName);
            FileInfo fileInfo = new FileInfo(str);

            using (RPM_DataFile rPMDataFile = new RPM_DataFile())
            {
                DataFile dataFile = new DataFile()
                {
                    AccountId          = this.AccountID,
                    Classification     = "Unclassified",
                    FileAddedTimestamp = new DateTime?(DateTime.Now),
                    FileExtension      = ".PDF",
                    FileExtension2     = ""
                };
                HashAlgorithm sHA1 = HashAlgorithms.SHA1;
                switch (Global.DefaultHashAlgorithm)
                {
                case HASH_ALGORITHM.MD5:
                    {
                        sHA1 = HashAlgorithms.MD5;
                        break;
                    }

                case HASH_ALGORITHM.SHA1:
                {
                    sHA1 = HashAlgorithms.SHA1;
                    break;
                }

                case HASH_ALGORITHM.SHA256:
                {
                    sHA1 = HashAlgorithms.SHA256;
                    break;
                }

                case HASH_ALGORITHM.SHA384:
                {
                    sHA1 = HashAlgorithms.SHA384;
                    break;
                }

                case HASH_ALGORITHM.SHA512:
                {
                    sHA1 = HashAlgorithms.SHA512;
                    break;
                }

                case HASH_ALGORITHM.RIPEMD160:
                {
                    sHA1 = HashAlgorithms.RIPEMD160;
                    break;
                }
                }
                dataFile.FileHashCode     = Hash.GetHashFromFile(str, sHA1);
                dataFile.FileSize         = fileInfo.Length;
                dataFile.FileTimestamp    = new DateTime?(fileInfo.LastWriteTime);
                dataFile.GPS              = "";
                dataFile.IsEncrypted      = new bool?(false);
                dataFile.IsPurged         = new bool?(false);
                dataFile.OriginalFileName = this.DocGuid.ToString();
                dataFile.PurgeFileName    = "";
                dataFile.Rating           = 0;
                dataFile.Security         = AccountSecurity.GetByString(this.cboSecurity.Text);
                dataFile.SetName          = "";
                dataFile.ShortDesc        = this.txtTitle.Text;
                dataFile.StoredFileName   = this.DocGuid.ToString();
                dataFile.Thumbnail        = Utilities.ImageToByte(this.ThumbnailImage);
                dataFile.TrackingID       = Guid.Empty;
                dataFile.UNCName          = this.UNC;
                dataFile.UNCPath          = this.DataPath;
                string machineName    = Environment.MachineName;
                string userName       = Environment.UserName;
                string userDomainName = Environment.UserDomainName;
                dataFile.MachineName    = machineName;
                dataFile.MachineAccount = userName;
                dataFile.UserDomain     = userDomainName;
                dataFile.SourcePath     = this.ScannerName;
                dataFile.LoginID        = Global.LoginIDName;
                rPMDataFile.SaveUpdate(dataFile);
                rPMDataFile.Save();
            }
        }
        public IActionResult SignIn([FromBody] AccountSecurity model)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    var resultAccountSecurity = _context.AccountSecurity.FirstOrDefault(x => x.Email == model.Email);

                    if (resultAccountSecurity?.Email == null)
                    {
                        return(BadRequest(new
                        {
                            Message = "Invalid user and / or password"
                        }));
                    }

                    bool isValid = PasswordUseFull.ValidatePass(model.Password, resultAccountSecurity.Password);

                    if (!isValid)
                    {
                        return(Unauthorized());
                    }
                    var resultAccount = _context.Account
                                        .Where(c => c.IdUser == resultAccountSecurity.UserId)
                                        .OrderByDescending(t => t.LastLoginOn)
                                        .FirstOrDefault();

                    var token = BuildToken(model);

                    Token tokenInfo = new Token()
                    {
                        CreatedDate = DateTime.Now,
                        GuidToken   = new Guid(token.Id),
                        ValueToken  = new JwtSecurityTokenHandler().WriteToken(token)
                    };
                    if (resultAccount != null)
                    {
                        Account account = new Account()
                        {
                            IdUser       = resultAccountSecurity.UserId,
                            CreatedOn    = resultAccount.CreatedOn,
                            LastLoginOn  = DateTime.Now,
                            LastUpdateOn = DateTime.Now,
                            TokenId      = new Guid(token.Id)
                        };

                        _context.Account.Add(account);
                        _context.Tokens.Add(tokenInfo);
                        _context.SaveChanges();
                    }

                    if (resultAccount != null)
                    {
                        return(Ok(new
                        {
                            idUser = resultAccountSecurity.UserId,
                            createdOn = resultAccount.CreatedOn,
                            lastUpdateOn = resultAccount.LastUpdateOn,
                            lastloginOn = resultAccount.LastLoginOn,
                            token = new JwtSecurityTokenHandler().WriteToken(token)
                        }));
                    }

                    return(BadRequest(new
                    {
                        Message = "Invalid user and / or password"
                    }));
                }
                return(BadRequest());
            }
            catch (Exception e)
            {
                return(BadRequest(e.Message));
            }
        }
Exemple #14
0
        public IActionResult SearchUser()
        {
            try
            {
                string token = string.Empty;
                if (Request.Headers.ContainsKey("Authorization"))
                {
                    if (Request.Headers.TryGetValue("Authorization", out var tokenHeader))
                    {
                        token = tokenHeader.ToString().Replace("Bearer", "").Trim();
                        var resultTokenExists = _context.Tokens.FirstOrDefault(x => x.ValueToken == token);
                        if (resultTokenExists == null)
                        {
                            return(Unauthorized());
                        }

                        var resultAccount = _context.Account
                                            .Where(c => c.TokenId == resultTokenExists.GuidToken)
                                            .OrderByDescending(t => t.LastLoginOn)
                                            .FirstOrDefault();

                        //not the same token
                        if (resultAccount == null)
                        {
                            return(Unauthorized());
                        }

                        if ((DateTime.Now - resultTokenExists.CreatedDate).Minutes > Convert.ToInt32(_configuration.GetSection("TokenExpiration").Value))
                        {
                            return(BadRequest(new
                            {
                                Message = "Invalid Session"
                            }));
                        }

                        AccountSecurity resultAccountSecurity = GetAccountSecurity(resultAccount.IdUser);

                        StringBuilder listPhones = new StringBuilder();
                        foreach (var item in resultAccountSecurity.Phones)
                        {
                            listPhones.AppendFormat("number:{0}, ", item.Value);
                        }
                        return(Ok(new
                        {
                            idUser = resultAccount.IdUser,
                            name = resultAccountSecurity.Name,
                            email = resultAccountSecurity.Email,
                            phones = listPhones.ToString(),
                            createdOn = resultAccount.CreatedOn,
                            lastUpdateOn = resultAccount.LastUpdateOn,
                            lastLoginOn = resultAccount.LastLoginOn,
                            token = resultTokenExists.ValueToken
                        }));
                    }
                }
            }
            catch (Exception e)
            {
                return(BadRequest(e.Message));
            }

            return(BadRequest());
        }