public Task <RegisterOutput> RegisterAsync(RegisterInput userData)
        {
            Console.WriteLine($"Register user data is not null: {userData != null}");

            if (userData == null)
            {
                throw new ArgumentNullException(nameof(userData));
            }

            var existingItem =
                _userDatas.FirstOrDefault(i => i.Email.Equals(userData.Email, StringComparison.OrdinalIgnoreCase));

            Console.WriteLine($"User with email: {userData.Email} exists: {existingItem != null}");

            if (existingItem != null)
            {
                return(Task.FromResult(new RegisterOutput().Error($"User with {userData.Email} already exists")));
            }

            var data = new UserAuthData
            {
                Email    = userData.Email,
                UserName = userData.Name,
                Password = userData.Password,
            };

            _userDatas.Add(data);

            return(Task.FromResult(new RegisterOutput().Success()));
        }
Exemplo n.º 2
0
        public int Create(UserCreateRequest model)
        {
            int    userId       = 0;
            string passwordHash = BCrypt.Net.BCrypt.HashPassword(model.Password);

            try
            {
                dataProvider.ExecuteNonQuery(
                    "Users_Create",
                    inputParamMapper: (parameters) =>
                {
                    parameters.AddWithValue("@UserName", model.UserName);
                    parameters.AddWithValue("@Email", model.Email);
                    parameters.AddWithValue("@UserTypeId", model.UserTypeId);
                    parameters.AddWithValue("@Password", passwordHash);
                    parameters.Add("@Id", SqlDbType.Int).Direction = ParameterDirection.Output;
                },
                    returnParameters: (parameters) =>
                {
                    userId = (int)parameters["@Id"].Value;
                });
            }
            catch (SqlException ex) when(ex.Number == 2627)
            {
                throw new DuplicateUserException();
            }

            UserAuthData userAuthData = new UserAuthData();

            userAuthData.Id = userId;
            authenticationService.LogIn(userAuthData, false);

            return(userId);
        }
        public IActionResult Authenticate([FromBody] UserAuthData user)
        {
            var existingUser = _authenticateService.Authenticate(user.Email, user.Password);

            if (existingUser == null)
            {
                return(BadRequest());
            }

            var secretKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("ticketwebapiservice@secretkey"));

            var signinCredentials = new SigningCredentials(secretKey, SecurityAlgorithms.HmacSha256);

            var claims = new List <Claim>
            {
                new Claim(ClaimTypes.Name, existingUser.Email),
                new Claim(ClaimTypes.Role, existingUser.Role.ToString())
            };

            var tokeOptions = new JwtSecurityToken(
                issuer: "http://localhost:4000",
                audience: "http://localhost:4000",
                claims: claims,
                expires: DateTime.Now.AddDays(7),
                signingCredentials: signinCredentials
                );

            var tokenString = new JwtSecurityTokenHandler().WriteToken(tokeOptions);

            return(Ok(new
            {
                Token = tokenString,
                role = existingUser.Role.ToString()
            }));
        }
Exemplo n.º 4
0
        public async Task Verify(string login, string code, string phone)
        {
            var authData = _authDataProvider.GetAuthData();
            var response = await _authApi.Verify(new VerifyRequest
            {
                DeviceModel = DeviceInfo.Model,
                Login       = login,
                Code        = code,
                Phone       = phone,
                Shared      = authData.Shared,
                SharedId    = authData.SharedId,
                DeviceId    = authData.DeviceId
            });

            if (response.Result && response.Data != null)
            {
                UserAuthData user = new UserAuthData()
                {
                    Caption = "Новый пользователь", // ??? get from response.Data
                    Client  = response.Data.Client,
                    Token   = response.Data.Token
                };
                _authsetting.Active = _authsetting.AddOrUpdate(user);
                _settings.AddOrUpdateValue(KEY_CLIENT, response.Data.Client);
                _settings.AddOrUpdateValue(KEY_TOKEN, response.Data.Token);
            }
            else
            {
                throw new RequestUnsuccessfulException(response.Message);
            }
        }
Exemplo n.º 5
0
        public async Task <IActionResult> RegisterWithToken(
            [FromBody] UserAuthData userAuthData)
        {
            var user = await _manager.FindByEmailAsync(userAuthData.Email);

            if (user == null)
            {
                var newUser = new IdentityUser()
                {
                    UserName = userAuthData.UserName,
                    Email    = userAuthData.Email
                };

                var status = await _manager.CreateAsync(newUser, userAuthData.Password);

                if (status.Succeeded)
                {
                    _logger.LogInformation($"{newUser.UserName} was registered");
                    user = await _manager.FindByEmailAsync(userAuthData.Email);

                    return(Ok());
                }

                _logger.LogWarning($"Register failed.\n{status.Errors}");
                return(BadRequest(status.Errors));
            }

            _logger.LogWarning("Register failed. User does exist");
            return(BadRequest("User does exist"));
        }
Exemplo n.º 6
0
        public void RepositoryRaSetModelAuthTest()
        {
            var modelAuth = new DataModelAuth(
                "111", "email", "*****@*****.**", "*****@*****.**", null, "2017-11-14T09:30:26.893Z", "https://pbs.twimg.com/profile_images/901947348699545601/hqRMHITj.jpg",
                null, "2017-11-17T08:43:17.669Z", "Jon", "Snow", null, "EN", false, 1510651826, 1510908197, 0, null);
            var authData = new UserAuthData(modelAuth);

            _repo = new SocialTrading.Service.Repositories.Repository(new RepositoryUserAuth(), new RepositoryUserSettings())
            {
                ModelAuth = modelAuth
            };

            var result = true;

            var fields = _repo.GetType().GetRuntimeFields();

            foreach (var item in fields)
            {
                if (item.Name.Equals("_modelAuth"))
                {
                    result &= Equals((item.GetValue(_repo) as Lazy <DataModelAuth>)?.Value, modelAuth);
                }
                else if (item.Name.Equals("_repositoryUserAuth"))
                {
                    var repoUserAuth = item.GetValue(_repo) as RepositoryUserAuth;
                    result &= repoUserAuth.AuthData.Equals(authData) ? true : false;
                }
            }

            Assert.IsTrue(result);
        }
Exemplo n.º 7
0
        public void AuthDataCastTestNull()
        {
            UserAuthData actual  = null;
            var          methods = typeof(UserAuthData).GetMethods();

            foreach (var item in methods)
            {
                if (item.Name.Contains("op_Implicit"))
                {
                    Assert.Throws <LazyUserAuthDataInvalidCastException>(() =>
                    {
                        try
                        {
                            actual = item.Invoke(typeof(UserAuthData), new object[] { null }) as UserAuthData;
                        }
                        catch (TargetInvocationException e)
                        {
                            if (e.InnerException is LazyUserAuthDataInvalidCastException ex)
                            {
                                throw ex;
                            }
                        }
                    });
                    return;
                }
            }

            Assert.Fail();
        }
        public bool Login(UserLoginRequest model)
        {
            int    userId       = 0;
            string passwordHash = null;
            bool   rememberMe   = model.RememberMe;

            dataProvider.ExecuteCmd(
                "Users_GetPasswordFromEmail",
                inputParamMapper: parameters =>
            {
                parameters.AddWithValue("@Email", model.Email);
            },
                singleRecordMapper: (reader, resultsSetNumber) =>
            {
                userId       = (int)reader["Id"];
                passwordHash = (string)reader["Password"];
            });

            bool isSuccessful = BCrypt.Net.BCrypt.Verify(model.Password, passwordHash);

            if (isSuccessful)
            {
                UserAuthData userAuthData = new UserAuthData();
                userAuthData.Id = userId;
                authenticationService.Login(userAuthData, rememberMe);
            }
            return(isSuccessful);
        }
 public IActionResult AddAuditor([FromBody] UserAuthData user)
 {
     _authenticateService.Create(new User {
         Email = user.Email, Role = UserRole.Auditor
     }, user.Password);
     return(Ok());
 }
Exemplo n.º 10
0
        public AuthData GetAuthData()
        {
            UserAuthData currentUser = authSettings.ActiveUser();
            AuthData     authData    = new AuthData()
            {
                Client   = currentUser.Client,
                Token    = currentUser.Token,
                Shared   = Shared,
                SharedId = SharedID,
                DeviceId = deviceInfo.GetIdentifier(),
                //Client = "329bd8",
                //Token = "h4+N7hREXT39jNIdjr1L8j9GaNnAIFcxorlDZRR2Jc0=",
                //Shared = Shared,
                //SharedId = SharedID,
                //DeviceId = "device_navigator",
            };

            //{
            //    Client = "329BD8",
            //    Token = "w+XZZ0xkFXGo3ojUJ2DciPxeWMuX45mPe9s7vV9tZHM=",
            //    Shared = "MltOzaOAUlSpDwJ3IgYMVOukOD18vO9gefodGe5i57M=",
            //    SharedId = "8",
            //    DeviceId = "35744307a4c44e6d",
            //    //DeviceId = deviceInfo.GetIdentifier()
            //};

            return(authData);
        }
Exemplo n.º 11
0
        public IHttpActionResult Login(UserAuthData userdata)
        {
            string username = userdata.Username;
            string password = userdata.Password;
            Dictionary <string, dynamic> userData = new Dictionary <string, dynamic>();

            if (ValidateLDAPUser(username, password))
            {
                userData = GetLdapUserData(username);
                Dictionary <string, dynamic> userRole = GetUserDb(username);

                if (userRole != null && userRole.ContainsKey("user_status") && userRole["user_status"] == true)
                {
                    foreach (var role in userRole)
                    {
                        userData.Add(role.Key, role.Value);
                    }
                }
                else
                {
                    userData.Clear();
                }
                return(Ok(userData));
            }
            else
            {
                return(NotFound());
            }
        }
Exemplo n.º 12
0
        public JwtToken GetToken(UserAuthData userAuthData)
        {
            if (userAuthData == null)
            {
                throw new ArgumentNullException(nameof(userAuthData));
            }

            var jwtConfig = _jwtAuthConfigProvider.GetConfig();

            var key = new SymmetricSecurityKey(jwtConfig.Key);

            var credentials = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);

            var claimsModel = JwtClaimsModel.Create(userAuthData);

            var token = new JwtSecurityToken(
                jwtConfig.Issuer,
                jwtConfig.Audience,
                claimsModel.GetClaims(),
                expires: DateTime.Now.AddMinutes(5),
                signingCredentials: credentials);

            var tokenValue = new JwtSecurityTokenHandler().WriteToken(token);

            return(new JwtToken(claimsModel.GetTokenId(), tokenValue));
        }
Exemplo n.º 13
0
        public async Task <ActionResult <Result <TokenInformation> > > SingUpAsync([FromBody] UserAuthData userAuthData)
        {
            if (await userService.ExistsAsync(userAuthData.Login))
            {
                return(Ok(await userService.SignInAsync(userAuthData)));
            }

            return(Ok(await userService.SignUpAsync(userAuthData)));
        }
Exemplo n.º 14
0
        public async Task <Answer> Login(UserAuthData user)
        {
            object[] args = new object[1];
            args[1] = user;
            //Answer answer = await netwrokSevice.NetworkRequest(NetworkService.TaskType.Login, null , user, null);
            Answer answer = new Answer();

            return(answer);
        }
Exemplo n.º 15
0
        public static JwtClaimsModel Create([NotNull] UserAuthData userAuthData)
        {
            if (userAuthData == null)
            {
                throw new ArgumentNullException(nameof(userAuthData));
            }

            var tokenId = Guid.NewGuid();

            return(new JwtClaimsModel(userAuthData.Uid, userAuthData.SystemId, tokenId));
        }
Exemplo n.º 16
0
        //захардкодил зареганного пользователя пользователя
        //    List<UserAuthData> userrsList = new List<UserAuthData>();
        //    UserAuthData currentUser = new UserAuthData()
        //    {
        //        Caption = "Ц0000820",
        //    Client = "329BD8",
        //    Token = "w+XZZ0xkFXGo3ojUJ2DciPxeWMuX45mPe9s7vV9tZHM="
        //};
        //    userrsList.Add(currentUser);
        //return userrsList;

        public UserAuthData ActiveUser()
        {
            List <UserAuthData> userlist    = Read();
            UserAuthData        currentUser = new UserAuthData();

            if (Active >= 0)
            {
                currentUser = userlist[Active];
            }
            return(currentUser);
        }
        public bool GoogleLogin(GoogleLoginRequest model)
        {
            bool userAuthenticated = false;
            int  userId            = 0;

            // CLIENT ID REMOVED
            string         googleClientId = "";
            string         gapiRespObject;
            string         gapiAuthUrl = "https://www.googleapis.com/oauth2/v3/tokeninfo?id_token=";
            HttpWebRequest webReq      = (HttpWebRequest)WebRequest.Create(gapiAuthUrl + model.GoogleToken);

            webReq.Method = "GET";
            HttpWebResponse webResp = (HttpWebResponse)webReq.GetResponse();

            using (Stream stream = webResp.GetResponseStream())
            {
                StreamReader reader = new StreamReader(stream, System.Text.Encoding.UTF8);
                gapiRespObject = reader.ReadToEnd();
            }

            var    gapiRespString = (JObject)JsonConvert.DeserializeObject(gapiRespObject);
            string authEmail      = gapiRespString["email"].Value <string>();
            string authAud        = gapiRespString["aud"].Value <string>();
            string authFirstName  = gapiRespString["given_name"].Value <string>();
            string authLastName   = gapiRespString["family_name"].Value <string>();
            string authPassword   = gapiRespString["sub"].Value <string>();

            if (authAud == googleClientId)
            {
                userAuthenticated = true;

                dataProvider.ExecuteCmd(
                    "Users_GoogleLogin",
                    inputParamMapper: (parameters) =>
                {
                    parameters.AddWithValue("@Email", authEmail);
                    parameters.AddWithValue("@FirstName", authFirstName);
                    parameters.AddWithValue("@LastName", authLastName);
                    parameters.AddWithValue("@UserTypeId", (object)DBNull.Value);
                    parameters.AddWithValue("@Password", authPassword);
                },
                    singleRecordMapper: (reader, resultsSetNumber) =>
                {
                    userId = (int)reader["Id"];
                });

                UserAuthData userAuthData = new UserAuthData()
                {
                    Id = userId
                };
                authenticationService.Login(userAuthData, true);
            }
            return(userAuthenticated);
        }
Exemplo n.º 18
0
        public void GetAuthDataTest()
        {
            var model = new UserAuthData(new DataModelAuth("111", "email", "*****@*****.**", "*****@*****.**", null, "2017-11-14T09:30:26.893Z", "image",
                                                           null, "2017-11-17T08:43:17.669Z", "Jon", "Snow", null, "EN", false, 1510651826, 1510908197, 0, null));

            _repo = new RepositoryUserAuth
            {
                AuthData = model
            };

            Assert.AreEqual(model, _repo.AuthData);
        }
Exemplo n.º 19
0
        public Dictionary <string, string> Login(UserAuthData userdata)
        {
            string username = userdata.Username;
            string password = userdata.Password;
            Dictionary <string, string> userData = new Dictionary <string, string>();

            if (ValidateLDAPUser(username, password))
            {
                userData = GetLdapUserData(username);
                //return userData;
            }
            return(userData);
        }
Exemplo n.º 20
0
        public async Task <bool> Login(UserAuthData user)
        {
            Answer answer = await authManager.Login(user);

            if (answer.ResType == 0)
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
Exemplo n.º 21
0
        public async Task <bool> LogInAsync(UserLogRequest logModel)
        {
            bool isSuccessful = false;

            UserAuthData response = GetAuth(logModel);

            if (response != null)
            {
                isSuccessful = await LogIn(response);
            }

            return(isSuccessful);
        }
Exemplo n.º 22
0
        public void UserAuthDataTestEqual(string name, string lastName, string image)
        {
            var actual = new UserAuthData(new DataModelAuth("111", "email", "*****@*****.**", "*****@*****.**", null, "2017-11-14T09:30:26.893Z", image,
                                                            null, "2017-11-17T08:43:17.669Z", name, lastName, null, "EN", false, 1510651826, 1510908197, 0, null));
            var expected = new UserAuthData(new DataModelAuth("111", "email", "*****@*****.**", "*****@*****.**", null, "2017-11-14T09:30:26.893Z", image,
                                                              null, "2017-11-17T08:43:17.669Z", name, lastName, null, "EN", false, 1510651826, 1510908197, 0, null));

            expected.GetType().GetRuntimeProperty("Name").SetValue(expected, name + " " + lastName);
            expected.GetType().GetRuntimeProperty("Image").SetValue(expected, image);

            var result = actual.Equals(expected);

            Assert.IsTrue(result);
        }
Exemplo n.º 23
0
        public IUserAuthVkApi AuthorizeUser(UserAuthData authData, ulong appId, out bool isSuccessful)
        {
            var userAuthorizedVkApi = vkApiFactory.Invoke();
            var apiAuthParams       = authData.UserAccessToken.IsNullOrEmpty() ||
                                      authData.TokenExpirationTime <= DateTime.Now ||
                                      CheckToken(authData.UserAccessToken).IsExpired
                ? new ApiAuthParams
            {
                Login                  = authData.Login,
                Password               = authData.Password,
                ApplicationId          = appId,
                Settings               = Settings.Wall,
                TwoFactorAuthorization = () => io.RequestInput("Enter 2FA Code: ", true)
            }
                : new ApiAuthParams
            {
                AccessToken   = authData.UserAccessToken,
                ApplicationId = appId,
                Settings      = Settings.Wall,
            };

            isSuccessful = TryAuthorize(userAuthorizedVkApi, apiAuthParams);

            if (isSuccessful == false)
            {
                return(null);
            }

            var token = userAuthorizedVkApi.Token;
            var tokenExpirationTime = appAuthorizedVkApi.Secure.CheckToken(token).Expire;

            authData.UserAccessToken     = token;
            authData.TokenExpirationTime = tokenExpirationTime;

            var currentUser = userAuthorizedVkApi.Users.Get(Enumerable.Empty <string>(), null, NameCase.Nom)
                              .FirstOrDefault();

            if (currentUser == null)
            {
                throw new VkApiException("Didn't got current user from API (users.get method)");
            }

            return(new UserAuthVkApi(userAuthorizedVkApi, new VkAuthData
            {
                Token = token,
                UserId = currentUser.Id,
                TokenExpirationTime = tokenExpirationTime,
                Username = $"{currentUser.FirstName} {currentUser.LastName}"
            }));
        }
Exemplo n.º 24
0
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        BaseController controller   = (BaseController)filterContext.Controller;
        UserAuthData   userAuthData = (UserAuthData)controller.ViewBag.UserAuthData;

        if (!controller.UserIsAuthenticated || !controller.ValidatePermission(userAuthData.ShopSeller.LoginName.ToString(), Actions[0]))
        {
            //REDIRECT
            RouteValueDictionary redirectTargetDictionary = new RouteValueDictionary();
            redirectTargetDictionary.Add("action", "ShowMessage");
            redirectTargetDictionary.Add("controller", "Error");
            redirectTargetDictionary.Add("message", "Role " + EnumToString.EnumRoleToString(userAuthData.ShopSeller.EnumRole) + " No permissions");
            filterContext.Result = new RedirectToRouteResult(redirectTargetDictionary);
        }
    }
Exemplo n.º 25
0
        public UserAuthData Post(UserAuth ua)
        {
            UserAuthData uad = new UserAuthData();


            uad.Email = "*****@*****.**";
            uad.Login = "******";

            uad.Name = "Константин";

            uad.Surname = "Гибон";
            uad.Token   = "sdfaTKTTJ54okOKT4wfefew24tr4wwffgRFGLGPrg34";



            return(uad);
        }
Exemplo n.º 26
0
        public AuthSession Authorize(UserAuthData userAuthData)
        {
            if (userAuthData == null)
            {
                throw new ArgumentNullException(nameof(userAuthData));
            }

            var jwtToken = _jwtTokenProvider.GetToken(userAuthData);

            _httpContextProvider
            .Get()
            .Response
            .Headers
            .Add(_jwtHttpSettings.HeaderName, jwtToken.TokenValue);

            return(new AuthSession(jwtToken.TokenId));
        }
Exemplo n.º 27
0
        public int AddOrUpdate(UserAuthData user)
        {
            List <UserAuthData> users = Read();
            int idx = users.FindIndex(u => { return(string.Equals(u.Token, user.Token)); });

            if (idx != -1)
            {
                users.RemoveAt(idx);
                users.Insert(idx, user);
            }
            else
            {
                idx = users.Count;
                users.Add(user);
            }
            Write(users);
            return(idx);
        }
Exemplo n.º 28
0
        public void AuthDataCastTest()
        {
            var expected = new UserAuthData(new DataModelAuth("111", "email", "*****@*****.**", "*****@*****.**", null, "2017-11-14T09:30:26.893Z", "image",
                                                              null, "2017-11-17T08:43:17.669Z", "Jon", "Snow", null, "EN", false, 1510651826, 1510908197, 0, null));

            UserAuthData actual  = null;
            var          methods = typeof(UserAuthData).GetMethods();

            foreach (var item in methods)
            {
                if (item.Name.Contains("op_Implicit"))
                {
                    actual = item.Invoke(typeof(UserAuthData), new object[] { new Lazy <UserAuthData>(() => expected) }) as UserAuthData;
                }
            }

            Assert.AreEqual(expected, actual);
        }
Exemplo n.º 29
0
        public void SetAuthDataTestNull()
        {
            _repo = new RepositoryUserAuth
            {
                AuthData = null
            };

            UserAuthData actual = null;

            foreach (var item in _repo.GetType().GetRuntimeFields())
            {
                if (item.Name.Equals("_authData"))
                {
                    actual = item.GetValue(_repo) as Lazy <UserAuthData>;
                    break;
                }
            }

            Assert.IsNull(actual);
        }
Exemplo n.º 30
0
        public async Task <Result <TokenInformation> > SignInAsync(UserAuthData userAuthData)
        {
            if (!await userRepository.ExistsAsync(userAuthData.Login))
            {
                throw new NotFoundException($"User with login '{userAuthData.Login}' not found");
            }

            var repositoryUser = await userRepository.GetAsync(userAuthData.Login);

            var actualPasswordHash = PasswordHelper.GetHash(userAuthData.Password, authConfigurationOptions.Value.Salt);

            if (actualPasswordHash == repositoryUser.PasswordHash)
            {
                return(Result <TokenInformation> .Success(new TokenInformation
                {
                    Token = repositoryUser.Token
                }));
            }

            throw new UnauthorizedException("Login or password is invalid");
        }