Beispiel #1
0
        protected override void InTransaction()
        {
            var user = Context.Users.FirstOrDefault(x => (x.Email.ToLower() == _login.ToLower() ||
                                                          x.Login.ToLower() == _login.ToLower()) && x.Password == _password && !x.Deleted);

            if (user == null)
            {
                Errors.Add("Login", "Неправильный логин или пароль");
            }
            else
            {
                user.TokenHash = GenerateHash.GetSha1Hash(Guid.NewGuid() + user.Password + Guid.NewGuid() + user.Email);
                _tokenHash     = user.TokenHash;

                _user = new User
                {
                    Email     = user.Email,
                    TokenHash = user.TokenHash,
                    Id        = user.Id,
                    Login     = user.Login,
                };

                Context.SaveChanges();
            }
        }
Beispiel #2
0
        public async Task <string> Authenticate(UserAuthenticateDTO userAuthenticate)
        {
            if (string.IsNullOrEmpty(userAuthenticate.Login))
            {
                throw new Exception("É necessário informar o login para autenticar!");
            }

            if (string.IsNullOrEmpty(userAuthenticate.Password))
            {
                throw new Exception("É necessário informar a senha para autenticar!");
            }

            var user = await _userRepository.GetByUsername(userAuthenticate.Login);

            if (user == null)
            {
                throw new Exception("Usuário informado não existe no sistema!");
            }

            var encryptedPassword = GenerateHash.ComputeSha256Hash(userAuthenticate.Password);

            if (encryptedPassword != user.Password)
            {
                throw new Exception("Não foi possível recuperar o token!");
            }

            return(TokenService.GenerateToken(user));
        }
Beispiel #3
0
        protected override void InTransaction()
        {
            var userLogin = Context.Users.FirstOrDefault(x => !x.Deleted && x.Login.ToLower() == _login.ToLower());

            if (userLogin != null)
            {
                Errors.Add("Name", "Пользователь с таким логином уже существует!");
            }
            else
            {
                var userEmail = Context.Users.FirstOrDefault(x => !x.Deleted && x.Email.ToLower() == _email.ToLower());
                if (userEmail != null)
                {
                    Errors.Add("Email", "Такой электронный адрес уже используется!");
                }
                else
                {
                    _user = new User
                    {
                        Password = _password,
                        Email    = _email,
                        Login    = _login,
                        Deleted  = false,
                    };
                    _user.TokenHash = GenerateHash.GetSha1Hash(Guid.NewGuid() + _user.Password + Guid.NewGuid() + _user.Email + Guid.NewGuid());
                    _tokenHash      = _user.TokenHash;
                    Context.Users.Add(_user);
                    Context.SaveChanges();
                }
            }
        }
Beispiel #4
0
        private Dictionary <string, string> GenerateTokenResponse(AppUser appUser, List <UserRoles> userRoles, string deviceId, DeviceType deviceType)
        {
            var            tokenExpiration = Convert.ToDouble(ConfigurationManager.AppSettings["AccessTokenExpireTime"]);
            ClaimsIdentity identity        = new ClaimsIdentity(OAuthDefaults.AuthenticationType);

            identity.AddClaim(new Claim(ClaimTypes.Name, appUser.UserName));
            identity.AddClaim(new Claim(ClaimTypes.NameIdentifier, appUser.Id.ToString()));
            identity.AddClaim(new Claim("displayName", appUser.Name));


            foreach (var userrole in userRoles)
            {
                identity.AddClaim(new Claim(ClaimTypes.Role, userrole.RoleName));
            }
            var props = new AuthenticationProperties()
            {
                IssuedUtc  = DateTime.UtcNow,
                ExpiresUtc = DateTime.UtcNow.Add(TimeSpan.FromMinutes(tokenExpiration)),
            };
            var ticket  = new AuthenticationTicket(identity, props);
            var context = new Microsoft.Owin.Security.Infrastructure.AuthenticationTokenCreateContext(
                Request.GetOwinContext(), Startup.OAuthOptions.AccessTokenFormat, ticket);

            var accessToken          = Startup.OAuthOptions.AccessTokenFormat.Protect(ticket);
            var refreshTokenId       = Guid.NewGuid().ToString("n");
            var refreshTokenLifeTime = Convert.ToDouble(ConfigurationManager.AppSettings["RefreshTokenExpireTime"]);
            var refreshToken         = new RefreshToken()
            {
                RefreshTokenId = GenerateHash.GetHash(refreshTokenId),
                UserId         = appUser.Id,
                IssuedUtc      = DateTime.UtcNow,
                ExpiresUtc     = DateTime.UtcNow.AddMinutes(refreshTokenLifeTime),
                DeviceId       = deviceId,
                DeviceType     = deviceType
            };

            context.Ticket.Properties.IssuedUtc  = refreshToken.IssuedUtc;
            context.Ticket.Properties.ExpiresUtc = refreshToken.ExpiresUtc;
            Microsoft.Owin.Security.DataHandler.Serializer.TicketSerializer serializer = new Microsoft.Owin.Security.DataHandler.Serializer.TicketSerializer();
            refreshToken.ProtectedTicket = System.Text.Encoding.Default.GetString(serializer.Serialize(context.Ticket));

            //Save new token
            refreshTokenRepository.SaveRefreshToken(refreshToken);

            Dictionary <string, string> tokenResponse = new Dictionary <string, string>();

            tokenResponse.Add("access_token", accessToken);
            tokenResponse.Add("token_type", "bearer");
            tokenResponse.Add("expires_in", TimeSpan.FromMinutes(tokenExpiration).TotalSeconds.ToString());
            tokenResponse.Add("issued", ticket.Properties.IssuedUtc.Value.ToString("R"));
            tokenResponse.Add("expires", ticket.Properties.ExpiresUtc.Value.ToString("R"));
            tokenResponse.Add("refresh_token", refreshTokenId);
            tokenResponse.Add("user_name", appUser.UserName);
            tokenResponse.Add("display_name", appUser.Name);
            return(tokenResponse);
        }
Beispiel #5
0
        /// <summary>
        /// Initializes a new instance of the <see cref="CountingBloomFilter&lt;T&gt;"/> class.
        /// </summary>
        /// <param name="estimatedsize">The estimated number of members of the set</param>
        /// <param name="targetFalsePositiveRate">The target false positive rate when the estimated size is attained</param>
        /// <param name="hashgen">The hash generation function</param>
        public CountingBloomFilter(int estimatedsize, float targetFalsePositiveRate, GenerateHash hashgen)
        {
            int size = (int)(-(estimatedsize * Math.Log(targetFalsePositiveRate)) / 0.480453014f);
            int keys = (int)(0.7f * size / estimatedsize);

            array    = new byte[size];
            KeyCount = keys;

            hashGenerator = hashgen;
        }
Beispiel #6
0
 public string GetNewAddress(string acronim, string lable)
 {
     return(acronim switch
     {
         "USDT" => GenerateHash.sha256(lable + "USDT" + DateTime.Now.ToString()),
         "ETH" => _etheriumService.GetNewAddress(lable),
         "ZEC" => _zCashService.GetNewAddress(),
         "LTC" => _litecoinService.GetNewAddress(lable),
         "DOGE" => _dogecoinService.GetNewAddress(lable),
         "DASH" => _dashService.GetNewAddress(lable),
         "BTC" => _bitcoinService.GetNewAddress(lable),
         "BCH" => _bitcoinCashService.GetNewAddress(lable),
         _ => null
     });
Beispiel #7
0
        protected override void InTransaction()
        {
            var _user = Context.Users.FirstOrDefault(x => x.Email.ToLower() == _email.ToLower() && !x.Deleted);

            if (_user == null)
            {
                Errors.Add("Email", "Такого почтового адреса не существует!");
            }
            else
            {
                _user.TokenHash = GenerateHash.GetSha1Hash(Guid.NewGuid() + _user.Password + Guid.NewGuid() + _user.Email);
                _tokenHash      = _user.TokenHash;
                Context.SaveChanges();
            }
        }
Beispiel #8
0
 protected void btncreatepassword_Click(object sender, EventArgs e)
 {
     if (txtpassword.Text != "" && txttnewpass.Text != "")
     {
         if (txtpassword.Text == txttnewpass.Text)
         {
             if (txtpassword.Text.Length >= 8)
             {
                 GenerateHash HashAndSalt = new GenerateHash();
                 string       GetSalt     = HashAndSalt.CreateSalt(10);
                 string       hashString  = HashAndSalt.GenarateHash(txtpassword.Text, GetSalt);
                 string       Updatepass  = Lo.UpdateLoginPassword(hashString, "", ViewState["Refno"].ToString(), "LoginNewVenPass", txtpassword.Text, GetSalt);
                 if (Updatepass == "true")
                 {
                     ViewState["Refno"] = null;
                     txtpassword.Text   = "";
                     txttnewpass.Text   = "";
                     lblogin.Visible    = true;
                     lblmsg.Text        = "Password created successfully.Please click on back to login for login into your account.";
                     ScriptManager.RegisterStartupScript(this, this.GetType(), "modelmsg", "showPopup();", true);
                 }
                 else
                 {
                     lblmsg.Text = "Password not created. Some error occured.";
                     ScriptManager.RegisterStartupScript(this, this.GetType(), "modelmsg", "showPopup();", true);
                 }
             }
             else
             {
                 lblmsg.Text = "Minimum Length is (8) character.";
                 ScriptManager.RegisterStartupScript(this, this.GetType(), "modelmsg", "showPopup();", true);
             }
         }
         else
         {
             lblmsg.Text = "Password mismatch.";
             ScriptManager.RegisterStartupScript(this, this.GetType(), "modelmsg", "showPopup();", true);
         }
     }
     else
     {
         lblmsg.Text = "Enter password.";
         ScriptManager.RegisterStartupScript(this, this.GetType(), "modelmsg", "showPopup();", true);
     }
 }
Beispiel #9
0
 protected void btnsub_Click(object sender, EventArgs e)
 {
     if (txtoldpass.Text != "" && txtnewpass.Text != "" && txtreppass.Text != "")
     {
         if (txtnewpass.Text == txtreppass.Text)
         {
             if (txtreppass.Text.Length >= 8)
             {
                 GenerateHash HashAndSalt    = new GenerateHash();
                 string       GetSalt        = HashAndSalt.CreateSalt(10);
                 string       hashString     = HashAndSalt.GenarateHash(txtnewpass.Text, GetSalt);
                 string       UpdatePassword = Lo.UpdateLoginPassword(hashString, txtoldpass.Text, ObjEnc.DecryptData(Session["User"].ToString()), "LoginOld", txtnewpass.Text, GetSalt);
                 if (UpdatePassword == "true")
                 {
                     divmsg.Visible = false;
                     ScriptManager.RegisterStartupScript(this, this.GetType(), "alert", "SuccessfullPop('Password change successfully.You just changed your password.Please login with your new password we will redirect you to login page');window.location ='Login';", true);
                 }
                 else
                 {
                     divmsg.InnerHtml = "Password not change";
                     divmsg.Attributes.Add("Class", "alert alert-danger");
                     divmsg.Visible = true;
                 }
             }
             else
             {
                 divmsg.InnerHtml = "Minimum Length is (8) charactor";
                 divmsg.Attributes.Add("Class", "alert alert-warning");
                 divmsg.Visible = true;
             }
         }
         else
         {
             divmsg.InnerHtml = "Password not match.";
             divmsg.Attributes.Add("Class", "alert alert-warning");
             divmsg.Visible = true;
         }
     }
     else
     {
         divmsg.InnerHtml = "All field fill mandatory.";
         divmsg.Attributes.Add("Class", "alert alert-warning");
         divmsg.Visible = true;
     }
 }
Beispiel #10
0
        public async Task <Guid> Create(UserDTO userRequest)
        {
            var existUser = await _userRepository.GetByUsername(userRequest.Login);

            if (existUser != null)
            {
                throw new Exception("Usuário já existe no sistema!");
            }

            if (!string.IsNullOrEmpty(userRequest.Password))
            {
                userRequest.Password = GenerateHash.ComputeSha256Hash(userRequest.Password);
            }

            var user = new User(userRequest.Login.ToLower(), userRequest.Password);

            await _userRepository.AddAsync(user);

            return(user.Id);
        }
 protected void btnchangepass_Click(object sender, EventArgs e)
 {
     if (txtpassword.Text != "" && txttnewpass.Text != "")
     {
         if (txtpassword.Text == txttnewpass.Text)
         {
             if (txtpassword.Text.Length >= 8)
             {
                 string       sType       = "LoginNew";
                 GenerateHash HashAndSalt = new GenerateHash();
                 string       GetSalt     = HashAndSalt.CreateSalt(10);
                 string       hashString  = HashAndSalt.GenarateHash(txtpassword.Text, GetSalt);
                 string       Updatepass  = Lo.UpdateLoginPassword(hashString, "", ViewState["Refno"].ToString(), sType, txtpassword.Text, GetSalt);
                 if (Updatepass == "true")
                 {
                     ViewState["Refno"] = null;
                     txtpassword.Text   = "";
                     txttnewpass.Text   = "";
                     ScriptManager.RegisterStartupScript(this, this.GetType(), "alert", "SuccessfullPop('Password created successfully.Please login with new password.We will redirected to you login page');window.location ='Login';", true);
                 }
                 else
                 {
                     ScriptManager.RegisterStartupScript(Page, Page.GetType(), "alert", "ErrorMssgPopup('Password not created. Some error occured.')", true);
                 }
             }
             else
             {
                 ScriptManager.RegisterStartupScript(Page, Page.GetType(), "alert", "ErrorMssgPopup('Minimum Length is (8) character')", true);
             }
         }
         else
         {
             ScriptManager.RegisterStartupScript(Page, Page.GetType(), "alert", "ErrorMssgPopup('Password mismatch')", true);
         }
     }
     else
     {
         ScriptManager.RegisterStartupScript(Page, Page.GetType(), "alert", "ErrorMssgPopup('Enter password')", true);
     }
 }
 protected void btnupdate_Click(object sender, EventArgs e)
 {
     if (txtnewpass.Text != "" && pwd.Text != "")
     {
         if (txtnewpass.Text == pwd.Text)
         {
             if (txtnewpass.Text.Length >= 8)
             {
                 GenerateHash HashAndSalt    = new GenerateHash();
                 string       GetSalt        = HashAndSalt.CreateSalt(10);
                 string       hashString     = HashAndSalt.GenarateHash(txtnewpass.Text, GetSalt);
                 string       UpdatePassword = Lo.UpdateLoginPassword(hashString, "", lblPageName.Text, "LoginPasspolicy", txtnewpass.Text, GetSalt);
                 if (UpdatePassword == "true")
                 {
                     lblPageName.Text = "";
                     txtnewpass.Text  = "";
                     pwd.Text         = "";
                     ScriptManager.RegisterStartupScript(this, this.GetType(), "alert", "alert('Password created successfully.Please login with new password.We will redirected to you Login page');window.location ='Login';", true);
                 }
                 else
                 {
                     ScriptManager.RegisterStartupScript(Page, Page.GetType(), "alert", "ErrorMssgPopup('Password is not created. Some error occured.')", true);
                 }
             }
             else
             {
                 ScriptManager.RegisterStartupScript(Page, Page.GetType(), "alert", "ErrorMssgPopup('Minimum Length is (8) character')", true);
             }
         }
         else
         {
             ScriptManager.RegisterStartupScript(Page, Page.GetType(), "alert", "ErrorMssgPopup('Password mismatch')", true);
         }
     }
     else
     {
         ScriptManager.RegisterStartupScript(Page, Page.GetType(), "alert", "ErrorMssgPopup('Enter password')", true);
     }
 }
Beispiel #13
0
        public IHttpActionResult GetAccessToken(RefreshTokenModel refreshTokenModel)
        {
            ApiResponse apiResponse = new ApiResponse();

            apiResponse.Message = "Your session has expired. Kindly login again.";
            try
            {
                var getHashToken           = GenerateHash.GetHash(refreshTokenModel.RefreshToken);
                var getRefreshTokenDetails = refreshTokenRepository.GetRefreshTokenDetail(getHashToken);
                if (getRefreshTokenDetails != null && getRefreshTokenDetails.ExpiresUtc > DateTime.UtcNow && !string.IsNullOrEmpty(getRefreshTokenDetails.ProtectedTicket))
                {
                    if (getRefreshTokenDetails.DeviceType == refreshTokenModel.DeviceType)
                    {
                        var currentTime = DateTime.UtcNow;
                        Microsoft.Owin.Security.DataHandler.Serializer.TicketSerializer serializer = new Microsoft.Owin.Security.DataHandler.Serializer.TicketSerializer();
                        var getSecurityClaims = serializer.Deserialize(System.Text.Encoding.Default.GetBytes(getRefreshTokenDetails.ProtectedTicket));

                        //Generate New Refresh Token and Access Token
                        var tokenExpiration = Convert.ToDouble(ConfigurationManager.AppSettings["AccessTokenExpireTime"]);
                        var props           = new AuthenticationProperties()
                        {
                            IssuedUtc  = currentTime,
                            ExpiresUtc = DateTime.UtcNow.Add(TimeSpan.FromMinutes(tokenExpiration)),
                        };

                        var ticket  = new AuthenticationTicket(getSecurityClaims.Identity, props);
                        var context = new Microsoft.Owin.Security.Infrastructure.AuthenticationTokenCreateContext(
                            Request.GetOwinContext(), Startup.OAuthOptions.AccessTokenFormat, ticket);
                        context.Ticket.Properties.Dictionary.Add(new KeyValuePair <string, string>("device_id", getRefreshTokenDetails.DeviceId));
                        var accessToken          = Startup.OAuthOptions.AccessTokenFormat.Protect(ticket);
                        var refreshTokenId       = Guid.NewGuid().ToString("n");
                        var refreshTokenLifeTime = Convert.ToDouble(ConfigurationManager.AppSettings["RefreshTokenExpireTime"]);


                        var refreshToken = new RefreshToken()
                        {
                            RefreshTokenId = GenerateHash.GetHash(refreshTokenId),
                            DeviceId       = getRefreshTokenDetails.DeviceId,
                            DeviceType     = refreshTokenModel.DeviceType,
                            UserId         = getRefreshTokenDetails.UserId,
                            IssuedUtc      = currentTime,
                            ExpiresUtc     = currentTime.AddMinutes(Convert.ToDouble(refreshTokenLifeTime)),
                        };
                        context.Ticket.Properties.IssuedUtc  = refreshToken.IssuedUtc;
                        context.Ticket.Properties.ExpiresUtc = refreshToken.ExpiresUtc;
                        refreshToken.ProtectedTicket         = System.Text.Encoding.Default.GetString(serializer.Serialize(context.Ticket));

                        //SAVE Refresh token
                        refreshTokenRepository.SaveRefreshToken(refreshToken);

                        Dictionary <string, string> tokenResponse = new Dictionary <string, string>();
                        tokenResponse.Add("access_token", accessToken);
                        tokenResponse.Add("token_type", "bearer");
                        tokenResponse.Add("expires_in", TimeSpan.FromMinutes(tokenExpiration).TotalSeconds.ToString());
                        tokenResponse.Add("issued", ticket.Properties.IssuedUtc.Value.ToString("R"));
                        tokenResponse.Add("expires", ticket.Properties.ExpiresUtc.Value.ToString("R"));
                        tokenResponse.Add("refresh_token", refreshTokenId);
                        return(ResponseMessage(Request.CreateResponse(HttpStatusCode.OK, tokenResponse)));
                    }
                }
            }
            catch (Exception ex)
            {
                logger.Error(ex);
            }

            return(ResponseMessage(Request.CreateResponse(HttpStatusCode.Gone, apiResponse)));
        }
Beispiel #14
0
 /// <summary>
 /// Initializes a new instance of the <see cref="CountingBloomFilter&lt;T&gt;"/> class.
 /// </summary>
 /// <param name="size">The size of the filter in bytes</param>
 /// <param name="keys">The number of keys to use</param>
 /// <param name="hashgen">The hash generation function</param>
 public CountingBloomFilter(int size, int keys, GenerateHash hashgen)
 {
     array         = new byte[size];
     KeyCount      = keys;
     hashGenerator = hashgen;
 }
Beispiel #15
0
        public async Task <IActionResult> Coins(SendCoinsViewModel sendCoinsModel)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    var userId = User.FindFirstValue(ClaimTypes.NameIdentifier);

                    string sendToUserId = await _userRepository.FindUserIdForSendPageAsync(sendCoinsModel.InputTextIdentifier);

                    if (string.IsNullOrEmpty(sendToUserId))
                    {
                        sendCoinsModel.Status = "Error. User does not exist.";
                        return(View(sendCoinsModel));
                    }

                    var walletFrom = await _walletsRepository.GetUserWalletAsync(userId, sendCoinsModel.Currency);

                    var walletTo = await _walletsRepository.GetUserWalletAsync(sendToUserId, sendCoinsModel.Currency);


                    decimal?_amount = sendCoinsModel.Amount.ConvertToDecimal();

                    if (walletFrom != null &&
                        _amount.Value > 0 &&
                        _amount.Value <= walletFrom.Value)
                    {
                        if (walletTo == null)
                        {
                            walletTo = await _walletsRepository.CreateUserWalletAsync(new WalletTableModel()
                            {
                                UserId          = sendToUserId,
                                CurrencyAcronim = walletFrom.CurrencyAcronim,
                                Value           = 0,
                                Address         = _walletService.GetNewAddress(walletFrom.CurrencyAcronim, sendToUserId)
                            });

                            await _eventsRepository.CreateEventAsync(new EventTableModel()
                            {
                                UserId          = userId,
                                Type            = (int)EventTypeEnum.CreateWallet,
                                Comment         = $"Create wallet {walletTo.CurrencyAcronim}",
                                WhenDate        = DateTime.Now,
                                CurrencyAcronim = walletTo.CurrencyAcronim
                            });
                        }

                        var resultBalance = await _balanceProvider.Send(_amount.Value, walletFrom, walletTo);

                        SendCoinsModel sendRecieve = new()
                        {
                            SenderUserId          = userId,
                            ReceiverUserId        = sendToUserId,
                            TypeSender            = (int)EventTypeEnum.Send,
                            TypeRecieve           = (int)EventTypeEnum.Recieve,
                            Comment               = sendCoinsModel.Comment,
                            CurrencyAcronim       = sendCoinsModel.Currency,
                            Value                 = _amount.Value,
                            PlatformCommission    = resultBalance.Commission,
                            StartBalanceSender    = resultBalance.StartBalanceSender,
                            ResultBalanceSender   = resultBalance.ResultBalanceSender,
                            StartBalanceReceiver  = resultBalance.StartBalanceReceiver.Value,
                            ResultBalanceReceiver = resultBalance.ResultBalanceReceiver.Value,
                            SenderWalletId        = walletFrom.Id,
                            ReceiverWalletId      = walletTo.Id,
                        };

                        sendRecieve.Hash = GenerateHash.ComputeHash(sendCoinsModel.Currency, sendRecieve.SenderWalletId,
                                                                    sendRecieve.ReceiverWalletId, sendRecieve.Value, DateTime.Now, sendRecieve.Comment);


                        await _walletsRepository.SendCoinsAsync(sendRecieve);

                        sendCoinsModel.Status = "Success";
                    }
                    else
                    {
                        sendCoinsModel.Status = "Not enough coins";
                    }
                }
                catch
                {
                    sendCoinsModel.Status = "Error";
                    return(View(sendCoinsModel));
                }
            }
            return(View(sendCoinsModel));
        }