Beispiel #1
0
        public void ChangePassword(string oldPassword, string newPassword, Action <bool> callback)
        {
            var user = Current;

            if (user == null)
            {
                callback(false);
            }
            else
            {
                var p = PasswordConverter.ConvertBack(newPassword);
                _usersRunTarget.ChangePassword(
                    user.Name,
                    PasswordConverter.ConvertBack(oldPassword),
                    p,
                    result =>
                {
                    if (result)
                    {
                        _identity = new Identity(user.Id, user.Name, p);
                    }
                    callback(result);
                });
            }
        }
Beispiel #2
0
 public void Test()
 {
     UsersRunTarget.Verify(t => t.ChangePassword(Name,
                                                 PasswordConverter.ConvertBack(OldPassword),
                                                 PasswordConverter.ConvertBack(NewPassword), It.IsAny <Action <bool> >()),
                           Times.Once());
 }
Beispiel #3
0
        public async Task <IActionResult> Register(RegisterModel model)
        {
            if (ModelState.IsValid)
            {
                User user = unit.UserRepository.Get(x => x.Email == model.Email).FirstOrDefault();
                if (user == null)
                {
                    user = new User
                    {
                        Name         = model.Name,
                        Surname      = model.Surname,
                        Email        = model.Email,
                        PasswordHash = PasswordConverter.Hash(model.Password),
                        CreationTime = DateTime.Now
                    };
                    UserRole userRole = unit.UserRoleRepository.Get(x => x.Name == "SimpleUser").FirstOrDefault();
                    if (userRole != null)
                    {
                        user.Role = userRole;
                    }

                    unit.UserRepository.Insert(user);
                    unit.Save();
                    await Authenticate(user);

                    return(RedirectToAction("Index", "Home"));
                }
                else
                {
                    ModelState.AddModelError("", "The same account already exist");
                }
            }
            return(View(model));
        }
Beispiel #4
0
        public IActionResult SendCodeToStrava([FromBody] StravaAuthCode code)
        {
            if (code.auth_code != null)
            {
                string url = $"https://www.strava.com/oauth/token?client_id={Credentials.StravaClientId.ToString()}&client_secret={Credentials.StravaClientSecret}&code={code.auth_code}";
                System.Net.HttpWebRequest request = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(url);
                request.Method = "POST";
                System.Net.WebResponse response = request.GetResponse();

                try
                {
                    Stream        stream         = response.GetResponseStream();
                    StreamReader  streamReader   = new StreamReader(stream);
                    string        responseString = streamReader.ReadToEnd();
                    StravaAthlete stravaAthlete  = JsonConvert.DeserializeObject <StravaAthlete>(responseString);
                    var           user           = _context.Users.Find(code.id);
                    user.StravaAccessTokenHashed = PasswordConverter.Encrypt(stravaAthlete.access_token);
                    _context.Users.Update(user);
                    _context.SaveChanges();
                    return(Ok());
                }
                catch
                {
                    return(BadRequest());
                }
            }
            else
            {
                return(NoContent());
            }
        }
Beispiel #5
0
        public async Task <IActionResult> Create([FromBody] UserVM data)
        {
            if (data != null)
            {
                try
                {
                    if (_context.Users.FirstOrDefault(e => data.email == e.Email) != null)
                    {
                        return(Conflict());
                    }
                    else
                    {
                        User user = new User();
                        user.FirstName      = data.first_name.Trim();
                        user.LastName       = data.last_name.Trim();
                        user.HashedPassword = PasswordConverter.Encrypt(data.password);
                        user.Email          = data.email.Trim();
                        _context.Users.Add(user);
                        await _context.SaveChangesAsync();

                        LoggedInUserVM viewModel = GetUserInfoFromEmail(data.email);

                        return(Ok(viewModel));
                    }
                }
                catch
                {
                    throw new System.Web.Http.HttpResponseException(System.Net.HttpStatusCode.InternalServerError);
                }
            }
            else
            {
                return(NoContent());
            }
        }
Beispiel #6
0
 internal Parameters(FipsDigestAlgorithm digestAlgorithm, PasswordConverter converter, byte[] password, int iterationCount, byte[] salt) : base(ALGORITHM_PBKDF2)
 {
     this.digestAlgorithm = digestAlgorithm;
     this.converter       = converter;
     this.password        = password;
     this.iterationCount  = iterationCount;
     this.salt            = salt;
 }
Beispiel #7
0
 internal Pkcs12DeriverBuilder(byte[] password, PasswordConverter converter, DigestAlgorithm digestAlgorithm, byte[] salt, int iterationCount)
 {
     this.digestAlgorithm = digestAlgorithm;
     this.converter       = converter;
     this.password        = password;
     this.iterationCount  = iterationCount;
     this.salt            = salt;
 }
Beispiel #8
0
        public void TestInitialize()
        {
            _context = new DbTestContext(Settings.Default.MainConnectionString);
            _fixture = new Fixture();

            _converter  = new PasswordConverter();
            _repository = new UserRepository(_converter, new SqlProcedureExecutor(Settings.Default.MainConnectionString));
        }
Beispiel #9
0
 protected override void EstablishContext()
 {
     base.EstablishContext();
     Name        = "Name2";
     Password    = "******";
     UserActions = new List <Action <User> >();
     UsersRunTarget
     .Setup(t => t.LogOn(Name, PasswordConverter.ConvertBack(Password), It.IsAny <Action <User> >()))
     .Callback <string, string, Action <User> >(LogOnCallback);
     Users.LogOn(Name, Password, Callback);
 }
Beispiel #10
0
 protected override void EstablishContext()
 {
     base.EstablishContext();
     CallbackResult1  = null;
     OldPassword      = "******";
     NewPassword      = "******";
     PswChangeActions = new List <Action <bool> >();
     UsersRunTarget
     .Setup(t => t.ChangePassword(Name, PasswordConverter.ConvertBack(OldPassword), PasswordConverter.ConvertBack(NewPassword), It.IsAny <Action <bool> >()))
     .Callback <string, string, string, Action <bool> >(ChangePasswordCallback);
     Users.ChangePassword(OldPassword, NewPassword, Callback1);
 }
Beispiel #11
0
        internal static IMessageBuilder GetApplicationMessageBuilder(
            IDbConnection connection,
            string mainConnectionString,
            string filesConnectionString)
        {
            var serializer        = new Serializer();
            var passwordConverter = new PasswordConverter();
            var mainExecutor      = new SqlProcedureExecutor(mainConnectionString);
            var filesExecutor     = new SqlProcedureExecutor(filesConnectionString);
            var states            = new StateRepository(mainExecutor);
            var applications      = new ApplicationRepository(connection);
            var awbs                    = new AwbRepository(connection);
            var applicationFiles        = new ApplicationFileRepository(filesExecutor);
            var clientRepository        = new ClientRepository(mainExecutor);
            var clientBalanceRepository = new ClientBalanceRepository(mainExecutor);
            var countries               = new CountryRepository(mainExecutor);
            var cities                  = new CityRepository(mainExecutor);
            var textBulder              = new Application.Helpers.TextBuilder(
                serializer,
                awbs,
                countries,
                cities,
                states,
                applicationFiles,
                clientBalanceRepository,
                new TextBuilder());
            var templates        = new TemplateRepository(mainExecutor);
            var recipientsFacade = new ApplicationEventRecipientsFacade(
                awbs,
                applications,
                new AdminRepository(connection),
                new ManagerRepository(connection),
                new SenderRepository(passwordConverter, mainExecutor),
                clientRepository,
                new CarrierRepository(passwordConverter, mainExecutor),
                new ForwarderRepository(passwordConverter, mainExecutor),
                new BrokerRepository(connection),
                new EventEmailRecipient(mainExecutor));
            var templateRepositoryHelper = new TemplateRepositoryHelper(templates);

            var filesFacade = GetFilesFacade(connection, mainConnectionString, filesConnectionString);

            return(new ApplicationMessageBuilder(
                       EmailsHelper.DefaultFrom,
                       filesFacade,
                       textBulder,
                       recipientsFacade,
                       templateRepositoryHelper,
                       serializer,
                       applications));
        }
Beispiel #12
0
        public void LogOn(string name, string password, Action <bool> callback)
        {
            var p = PasswordConverter.ConvertBack(password);

            _usersRunTarget.LogOn(name, p, user =>
            {
                if (user != null)
                {
                    Current   = user;
                    _identity = new Identity(user.Id, user.Name, p);
                }
                callback.Invoke(user != null);
            });
        }
Beispiel #13
0
        private static void RunBalaceJob(string connectionString, string filesConnectionString, int partitionId)
        {
            using (var connection = new SqlConnection(connectionString))
            {
                var executor   = new SqlProcedureExecutor(connectionString);
                var serializer = new Serializer();
                var events     = new EventRepository(executor);
                var clientBalanceRepository = new ClientBalanceRepository(executor);
                var clientRepository        = new ClientRepository(executor);
                var adminRepository         = new AdminRepository(connection);
                var eventEmailRecipient     = new EventEmailRecipient(executor);
                var converter           = new PasswordConverter();
                var senders             = new SenderRepository(converter, executor);
                var localizedDataHelper = new BalanceLocalizedDataHelper(
                    clientBalanceRepository,
                    serializer,
                    clientRepository,
                    senders);
                var managerRepository = new ManagerRepository(connection);
                var recipientsFacade  = new ClientEventRecipientsFacade(
                    adminRepository,
                    managerRepository,
                    clientRepository,
                    eventEmailRecipient);

                var messageBuilder = GetCommonMessageBuilder(
                    connection,
                    connectionString,
                    filesConnectionString,
                    localizedDataHelper,
                    recipientsFacade);
                var emailingProcessor = GetDefaultEmailingProcessor(partitionId, executor, messageBuilder);

                var processors = new Dictionary <EventState, IEventProcessor>
                {
                    { EventState.Emailing, emailingProcessor }
                };

                new SequentialEventJob(
                    events,
                    partitionId,
                    new Dictionary <EventType, IDictionary <EventState, IEventProcessor> >
                {
                    { EventType.BalanceDecreased, processors },
                    { EventType.BalanceIncreased, processors }
                }).Work();
            }
        }
 public PkixPbeEncryptorBuilder(PasswordConverter converter, DigestAlgorithm digestAlgorithm, DerObjectIdentifier keyEncAlgorithm)
 {
     if (keyEncAlgorithm.Equals(PkcsObjectIdentifiers.PbeWithShaAnd2KeyTripleDesCbc) ||
         keyEncAlgorithm.Equals(PkcsObjectIdentifiers.PbeWithShaAnd3KeyTripleDesCbc))
     {
         this.algorithm       = keyEncAlgorithm;
         this.keyEncAlgorithm = keyEncAlgorithm;
         this.converter       = PasswordConverter.PKCS12;
         this.digestAlgorithm = FipsShs.Sha1;
     }
     else
     {
         this.algorithm       = PkcsObjectIdentifiers.IdPbeS2;
         this.keyEncAlgorithm = keyEncAlgorithm;
         this.converter       = converter;
         this.digestAlgorithm = digestAlgorithm;
     }
 }
Beispiel #15
0
            internal DeriverBuilder(byte[] password, PasswordConverter converter, FipsDigestAlgorithm digestAlgorithm, byte[] salt, int iterationCount)
            {
                this.digestAlgorithm = digestAlgorithm;
                this.converter       = converter;
                this.password        = password;
                this.iterationCount  = iterationCount;
                this.salt            = salt;

                if (CryptoServicesRegistrar.IsInApprovedOnlyMode())
                {
                    if (salt.Length < 16)
                    {
                        throw new CryptoUnapprovedOperationError("salt must be at least 128 bits");
                    }
                    if (password.Length < 14)
                    {
                        throw new CryptoUnapprovedOperationError("password must be at least 112 bits");
                    }
                }
            }
Beispiel #16
0
        public List <StravaViewModel> GetStravaData(int eventId, DateTime date, DateTime time, string lat1, string lng1, string lat2, string lng2)
        {
            string        before           = DateTimeToUnixTimestamp(date.AddHours(12)).ToString();
            string        after            = DateTimeToUnixTimestamp(date.AddHours(-12)).ToString();
            var           athletes         = _context.Invites.Where(a => a.EventId == eventId && a.Going == true).Join(_context.Users, a => a.UserId, b => b.Id, (a, b) => new { a, b }).ToList();
            List <string> requests         = new List <string> {
            };
            List <StravaViewModel> results = new List <StravaViewModel>();
            int i = 0;

            while (i < athletes.Count())
            {
                if (athletes[i].b.StravaAccessTokenHashed != null)
                {
                    string         username = $"{athletes[i].b.FirstName} {athletes[i].b.LastName}";
                    string         token    = PasswordConverter.Decrypt(athletes[i].b.StravaAccessTokenHashed);
                    string         url      = $"https://www.strava.com/api/v3/athlete/activities?access_token={token}&before={before}&after={after}&page=1&per_page=1";
                    HttpWebRequest request  = (HttpWebRequest)WebRequest.Create(url);
                    request.Method = "GET";
                    WebResponse  response       = request.GetResponse();
                    string       responseString = null;
                    Stream       stream         = response.GetResponseStream();
                    StreamReader streamReader   = new StreamReader(stream);
                    responseString = streamReader.ReadToEnd();
                    List <Activity> activities = new List <Activity>();
                    activities = JsonConvert.DeserializeObject <List <Activity> >(responseString);
                    foreach (Activity activity in activities)
                    {
                        StravaViewModel vm = new StravaViewModel();
                        vm.username = username;
                        vm.activity = activity;
                        results.Add(vm);
                    }
                }
                i++;
            }
            results = CheckIfActivityTimeValid(results, time);
            results = CheckIfActivityLocationValid(results, lat1, lng1, lat2, lng2);
            results = results.OrderBy(a => a.activity.moving_time).ToList();
            return(results);
        }
Beispiel #17
0
        private static void RunAwbJob(string mainConnectionString, string filesConnectionString, int partitionId)
        {
            using (var connection = new SqlConnection(mainConnectionString))
            {
                var executor            = new SqlProcedureExecutor(mainConnectionString);
                var events              = new EventRepository(executor);
                var adminRepository     = new AdminRepository(connection);
                var brokerRepository    = new BrokerRepository(connection);
                var awbs                = new AwbRepository(connection);
                var converter           = new PasswordConverter();
                var senders             = new SenderRepository(converter, executor);
                var localizedDataHelper = new AwbEventLocalizedDataHelper(awbs, senders);
                var eventEmailRecipient = new EventEmailRecipient(executor);
                var managerRepository   = new ManagerRepository(connection);
                var recipientsFacade    = new AwbEventRecipientsFacade(
                    adminRepository,
                    managerRepository,
                    brokerRepository,
                    awbs,
                    eventEmailRecipient);

                var messageBuilder = GetCommonMessageBuilder(
                    connection,
                    mainConnectionString,
                    filesConnectionString,
                    localizedDataHelper,
                    recipientsFacade);
                var emailingProcessor = GetDefaultEmailingProcessor(partitionId, executor, messageBuilder);

                var processors = (IDictionary <EventState, IEventProcessor>) new Dictionary <EventState, IEventProcessor>
                {
                    { EventState.Emailing, emailingProcessor }
                };

                new SequentialEventJob(
                    events,
                    partitionId,
                    EventHelper.AwbEventTypes.ToDictionary(x => x, x => processors)).Work();
            }
        }
Beispiel #18
0
 public IActionResult Login([FromBody] LogInAttempt data)
 {
     if (data.email != null && data.password != null)
     {
         try
         {
             var user = _context.Users.FirstOrDefault(a => a.Email == data.email);
             if (user != null)
             {
                 string hashedPasswordAttempt = PasswordConverter.Encrypt(data.password);
                 var    actualPassword        = user.HashedPassword;
                 if (actualPassword == hashedPasswordAttempt)
                 {
                     LoggedInUserVM viewModel = GetUserInfoFromUser(user);
                     return(Ok(viewModel));
                 }
                 else
                 {
                     return(Unauthorized());
                 }
             }
             else
             {
                 return(NotFound());
             }
         }
         catch
         {
             throw new System.Web.Http.HttpResponseException(System.Net.HttpStatusCode.InternalServerError);
         }
     }
     else
     {
         return(NoContent());
     }
 }
Beispiel #19
0
        public void SeedData(ModelBuilder builder)
        {
            //CREATE USER ROLES
            var simpleRole = new UserRole()
            {
                Id = 1, Name = "SimpleUser"
            };
            var adminRole = new UserRole()
            {
                Id = 2, Name = "Administrator"
            };
            var moderRole = new UserRole()
            {
                Id = 3, Name = "Moderator"
            };

            //CREATE CATEGORIES
            var smartphones = new Category()
            {
                Id = 1, Name = "Smartphone"
            };
            var notebooks = new Category()
            {
                Id = 2, Name = "Notebook"
            };
            var tvs = new Category()
            {
                Id = 3, Name = "TV"
            };

            //CREATE IMAGES
            var iphonexr = new Image()
            {
                Id = 1, Path = "iphonexr.jpg"
            };
            var samsung10e = new Image()
            {
                Id = 2, Path = "samsung10e.jpg"
            };
            var macbook16 = new Image()
            {
                Id = 3, Path = "macbookpro16.jpg"
            };
            var macbook13 = new Image()
            {
                Id = 4, Path = "macbookpro13.jpg"
            };
            var lgtv = new Image()
            {
                Id = 5, Path = "lgtv.jpg"
            };

            //CREATE USERS
            //pasword for the user = 12345678
            //role - simple user
            var user1 = new User()
            {
                Id           = 1,
                CreationTime = DateTime.Now,
                Name         = "Vasyl",
                Surname      = "Vlasiuk",
                Email        = "*****@*****.**",
                PasswordHash = PasswordConverter.Hash("12345678"),
                RoleId       = 1,
                Adress       = ""
            };
            //password = qwerty12
            //role - moderator
            var user2 = new User()
            {
                Id           = 2,
                CreationTime = DateTime.Now,
                Name         = "John",
                Surname      = "Doe",
                Email        = "*****@*****.**",
                PasswordHash = PasswordConverter.Hash("qwerty12"),
                RoleId       = 2,
                Adress       = ""
            };
            //password = 87654321
            //role = administrator
            var user3 = new User()
            {
                Id           = 3,
                CreationTime = DateTime.Now,
                Name         = "Ostap",
                Surname      = "Bondar",
                Email        = "*****@*****.**",
                PasswordHash = PasswordConverter.Hash("87654321"),
                RoleId       = 3,
                Adress       = ""
            };

            //CREATE PRODUCTS
            var product1 = new Product()
            {
                Id              = 1,
                CreatorUserId   = 3,
                CategoryId      = 1,
                Producer        = "Apple",
                Model           = "iPhone XR 64GB",
                Price           = 760.0M,
                Description     = "Example of description about a smartphone.",
                ImageId         = 1,
                CreationTime    = DateTime.Now,
                CommentsEnabled = true
            };
            var product2 = new Product()
            {
                Id              = 2,
                CreatorUserId   = 3,
                CategoryId      = 1,
                Producer        = "Samsung",
                Model           = "S10e SM-G970",
                Price           = 650.00M,
                Description     = "New smartphone Samsung S10e is already in sale.",
                ImageId         = 2,
                CreationTime    = DateTime.Now,
                CommentsEnabled = true
            };
            var product3 = new Product()
            {
                Id              = 3,
                CreatorUserId   = 3,
                CategoryId      = 2,
                Producer        = "Apple",
                Model           = "Macbook Pro 16\"",
                Price           = 2200.00M,
                Description     = "New notebook from Apple is already in our store.",
                ImageId         = 3,
                CreationTime    = DateTime.Now,
                CommentsEnabled = true
            };
            var product4 = new Product()
            {
                Id              = 4,
                CreatorUserId   = 3,
                CategoryId      = 2,
                Producer        = "Apple",
                Model           = "MacBook Pro 13\" Space Gray",
                Price           = 1400.00M,
                Description     = "New notebook from Apple is already in our store.",
                ImageId         = 4,
                CreationTime    = DateTime.Now,
                CommentsEnabled = true
            };
            var product5 = new Product()
            {
                Id              = 5,
                CreatorUserId   = 3,
                CategoryId      = 3,
                Producer        = "LG",
                Model           = "43UM7459",
                Price           = 450.00M,
                Description     = "New TV with high resolution screen.",
                ImageId         = 5,
                CreationTime    = DateTime.Now,
                CommentsEnabled = true
            };

            builder.Entity <UserRole>().HasData(adminRole, moderRole, simpleRole);
            builder.Entity <Image>().HasData(iphonexr, samsung10e, macbook16, macbook13, lgtv);
            builder.Entity <Category>().HasData(smartphones, notebooks, tvs);
            builder.Entity <User>().HasData(user1, user2, user3);
            builder.Entity <Product>().HasData(product1, product2, product3, product4, product5);
        }
Beispiel #20
0
 internal OpenSslParameters(PasswordConverter converter, byte[] password, byte[] salt) : base(ALGORITHM_OPENSSL)
 {
     this.converter = converter;
     this.password  = password;
     this.salt      = salt;
 }
Beispiel #21
0
 internal OpenSslParameters(PasswordConverter converter, char[] password) : this(converter, converter.Convert(password), new byte[20])
 {
 }
Beispiel #22
0
 public IPasswordBasedDeriverBuilder <OpenSslParameters> From(PasswordConverter converter, char[] password)
 {
     return(new OpenSslDeriverBuilder(converter.Convert(password), converter, new byte[20]));
 }
Beispiel #23
0
 public void SetPassword(long userId, string password, Action <bool> callback)
 {
     _usersRunTarget.SetPassword(_identity, userId, PasswordConverter.ConvertBack(password), callback);
 }
Beispiel #24
0
 internal Parameters(FipsDigestAlgorithm algorithm, PasswordConverter converter, char[] password) : this(algorithm, converter, converter.Convert(password), 1024, new byte[20])
 {
 }
Beispiel #25
0
 internal OpenSslDeriverBuilder(byte[] password, PasswordConverter converter, byte[] salt)
 {
     this.converter = converter;
     this.password  = password;
     this.salt      = salt;
 }
Beispiel #26
0
        public async Task <IActionResult> Login(LoginModel model)
        {
            if (ModelState.IsValid)
            {
                User user = unit.UserRepository.Get(x => x.Email == model.Email && x.PasswordHash == PasswordConverter.Hash(model.Password), includeProperties: "Role").FirstOrDefault();
                if (user != null)
                {
                    await Authenticate(user);

                    return(RedirectToAction("Index", "Home"));
                }
                ModelState.AddModelError("", "Uncorrect email or password input");
            }
            return(View(model));
        }
 /// <summary>
 /// Base constructor.
 /// </summary>
 public PkixPbeDecryptorProviderBuilder()
 {
     this.converter = PasswordConverter.UTF8;
 }
Beispiel #28
0
 public IPasswordBasedDeriverBuilder <Parameters> From(PasswordConverter converter, char[] password)
 {
     return(new DeriverBuilder(converter.Convert(password), converter, FipsShs.Sha1HMac, new byte[20], 1024));
 }
Beispiel #29
0
 public void Test()
 {
     UsersRunTarget.Verify(t => t.LogOn(Name, PasswordConverter.ConvertBack(Password),
                                        It.IsAny <Action <User> >()), Times.Once());
 }
 internal MyDecryptorBuilderProvider(PasswordConverter converter, char[] password)
 {
     this.converter = converter;
     this.password  = password;
 }