// GET: Home
        public async Task<ActionResult> Index()
        {
            var context = new ApplicationDbContext(); // DefaultConnection
            var store = new UserStore<CustomUser>(context);
            var manager = new UserManager<CustomUser>(store);

            var email = "*****@*****.**";
            var password = "******";
            var user = await manager.FindByEmailAsync(email);

            if (user == null)
            {
                user = new CustomUser
                {
                    UserName = email,
                    Email = email,
                    FirstName = "Super",
                    LastName = "Admin"
                };

                await manager.CreateAsync(user, password);
            }
            else
            {
                user.FirstName = "Super";
                user.LastName = "Admin";

                await manager.UpdateAsync(user);
            }


            return Content("Hello, Index");
        }
        // GET: Home
        public async Task<ActionResult> Index()
        {
            var context = new ApplicationDbContext(); // DefaultConnection
            var store = new UserStore<CustomUser>(context);
            var manager = new UserManager<CustomUser>(store);
            var signInManager = new SignInManager<CustomUser, string>(manager,
                HttpContext.GetOwinContext().Authentication);

            var email = "*****@*****.**";
            var password = "******";
            var user = await manager.FindByEmailAsync(email);

            if (user == null)
            {
                user = new CustomUser
                {
                    UserName = email,
                    Email = email,
                    FirstName = "Super",
                    LastName = "Admin"
                };

                await manager.CreateAsync(user, password);
            }
            else
            {
                var result = await signInManager.PasswordSignInAsync(user.UserName, password, true, false);

                if (result == SignInStatus.Success)
                {
                    return Content("Hello, " + user.FirstName + " " + user.LastName);
                }
                //user.FirstName = "Super";
                //user.LastName = "Admin";

                //await manager.UpdateAsync(user);
            }


            return Content("Hello, Index");
        }
        public override Task AuthenticateExternalAsync(ExternalAuthenticationContext context)
        {
            // look for the user in our local identity system from the external identifiers
            var user = Users.SingleOrDefault(x => x.Provider == context.ExternalIdentity.Provider && x.ProviderID == context.ExternalIdentity.ProviderId);
            string name = "Unknown";
            if (user == null)
            {
                // new user, so add them here
                var nameClaim = context.ExternalIdentity.Claims.First(x => x.Type == Constants.ClaimTypes.Name);
                if (nameClaim != null) name = nameClaim.Value;

                user = new CustomUser
                {
                    Subject = Guid.NewGuid().ToString(),
                    Provider = context.ExternalIdentity.Provider,
                    ProviderID = context.ExternalIdentity.ProviderId,
                    Claims = new List<Claim> { new Claim(Constants.ClaimTypes.Name, name) }
                };
                Users.Add(user);
            }

            name = user.Claims.First(x => x.Type == Constants.ClaimTypes.Name).Value;
            context.AuthenticateResult = new AuthenticateResult(user.Subject, name, identityProvider: user.Provider);
            
            return Task.FromResult(0);
        }
        public async Task<IActionResult> Register(RegisterViewModel model)
        {
            if (!ModelState.IsValid)
            {
                model.Errors.AddModelStateErrors(ModelState);
                return View(model);
            }

            var user = new CustomUser(model.Email);

            var result = await userManager.CreateAsync(user, model.Password);

            if (result.Succeeded)
            {
                var signInResult = await signInManager.PasswordSignInAsync(user.UserName, model.Password, false, false);

                if (signInResult.Succeeded)
                {
                    return RedirectToAction("Index", "Home");
                }

                model.Errors.Add("Registration was successful however sign-in failed. Please try to sign in again");
            }
            else
            {
                foreach (var error in result.Errors)
                {
                    model.Errors.Add(error.Description);
                }
            }
            return View(model);
        }
        public Task<Thinktecture.IdentityServer.Core.Authentication.ExternalAuthenticateResult> AuthenticateExternalAsync(string subject, Thinktecture.IdentityServer.Core.Models.ExternalIdentity externalUser)
        {
            // look for the user in our local identity system from the external identifiers
            var user = Users.SingleOrDefault(x => x.Provider == externalUser.Provider.Name && x.ProviderID == externalUser.ProviderId);
            string name = "Unknown";
            if (user == null)
            {
                // new user, so add them here
                var nameClaim = externalUser.Claims.First(x => x.Type == Constants.ClaimTypes.Name);
                if (nameClaim != null) name = nameClaim.Value;

                user = new CustomUser { 
                    Subject = Guid.NewGuid().ToString(),
                    Provider = externalUser.Provider.Name,
                    ProviderID = externalUser.ProviderId,
                    Claims = new List<Claim> { new Claim(Constants.ClaimTypes.Name, name) }
                };
                Users.Add(user);
            }

            name = user.Claims.First(x => x.Type == Constants.ClaimTypes.Name).Value;

            if (user.IsRegistered)
            {
                // user not registered so we will issue a partial login and redirect them to our registration page
                return Task.FromResult<ExternalAuthenticateResult>(new ExternalAuthenticateResult(user.Provider, user.Subject, name));
            }
            else
            {
                // user is registered so continue
                return Task.FromResult<ExternalAuthenticateResult>(new ExternalAuthenticateResult("/core/externalregistration", user.Provider, user.Subject, name));
            }
        }
        // GET: Home
        public async Task<ActionResult> Index()
        {
            var email = "*****@*****.**";
            var password = "******";
            var user = await UserManager.FindByEmailAsync(email);

            if (user == null)
            {
                user = new CustomUser
                {
                    UserName = email,
                    Email = email,
                    FirstName = "Super",
                    LastName = "Admin"
                };

                await UserManager.CreateAsync(user, password);
            }
            else
            {
                var result = await SignInManager.PasswordSignInAsync(user.UserName, password, true, false);

                if (result == SignInStatus.Success)
                {
                    return Content("Hello, " + user.FirstName + " " + user.LastName);
                }
                //user.FirstName = "Super";
                //user.LastName = "Admin";

                //await manager.UpdateAsync(user);
            }


            return Content("Hello, Index");
        }
        public static void InternalSeed(CustomDbContext db)
        {
            var userManager = HttpContext.Current.GetOwinContext().GetUserManager<CustomUserManager>();
            var roleManager = HttpContext.Current.GetOwinContext().Get<CustomRoleManager>();
            const string name = "*****@*****.**";
            const string password = "******";
            const string roleName = "Admin";

            //Create Role Admin if it does not exist
            var role = roleManager.FindByName(roleName);
            if (role == null)
            {
                role = new CustomRole(roleName);
                var roleresult = roleManager.Create(role);
            }

            var user = userManager.FindByName(name);
            if (user == null)
            {
                user = new CustomUser { UserName = name, Email = name };
                var result = userManager.Create(user, password);
                result = userManager.SetLockoutEnabled(user.Id, false);
            }

            // Add user admin to Role Admin if not already added
            var rolesForUser = userManager.GetRoles(user.Id);
            if (!rolesForUser.Contains(role.Name))
            {
                var result = userManager.AddToRole(user.Id, role.Name);
            }
        }
        public async Task<ActionResult> Create(RegisterViewModel model)
        {
            if (ModelState.IsValid)
            {
                var succeded = true;
                var user = new CustomUser { UserName = model.Email, Email = model.Email };
                var adminresult = await UserManager.CreateAsync(user, model.Password);
                if (!adminresult.Succeeded)
                {
                    ModelState.AddModelError("", adminresult.Errors.First());
                }
                else
                {
                    user = await UserManager.FindByEmailAsync(model.Email);
                    var result = await UserManager.AddToCategoryAsync(user.Id, model.Category);
                    if (!result.Succeeded)
                    {
                        ModelState.AddModelError("", result.Errors.First());
                    }
                    else
                    {
                        return RedirectToAction("Index");
                    }
                }
            }

            model.CategoriesList = new SelectList(await CategoryManager.Categories.ToListAsync(), "Name", "Name");
            return View(model);
        }
 public static void AddNewUser(CustomUser NewCustomUser)
 {
     lock (GatesToUsers)
     {
         CurrentCollectionOfUsers.Add(NewCustomUser);
         string UsersDataJson = JsonConvert.SerializeObject(CurrentCollectionOfUsers);
         AccessorToWebConfig CurrentAccessorToWebConfig = new AccessorToWebConfig();
         string FullPathToJsonDirectory = HttpContext.Current.Server.MapPath("/" + CurrentAccessorToWebConfig.NameOfDirectoryForJsonData);
         string FullPathToFile = FullPathToJsonDirectory + "/" + CurrentAccessorToWebConfig.NameOfFileForJsonData;
         File.WriteAllText(FullPathToFile, UsersDataJson, Encoding.UTF8);
     }
 }
Example #10
0
        public void AddUser(CustomUser customUser)
        {
            if (customUser == null)
            {
                throw new ArgumentNullException();
            }

            if (GetUserById(customUser.Id) != null)
            {
                throw new InvalidOperationException("Cannot add a user with the same Id: " + customUser.Id);
            }

            var user = xmlUserMap.Map(customUser);

            GetUsersParentNode().Add(user);

            CheckSync(true);
        }
        // GET: Home
        public async Task<ActionResult> Index()
        {
            var email = "*****@*****.**";
            var password = "******";
            var user = await UserManager.FindByEmailAsync(email);
            var roles = ApplicationRoleManager.Create(HttpContext.GetOwinContext());

            if (!await roles.RoleExistsAsync(SecurityRoles.Admin))
            {
                await roles.CreateAsync(new IdentityRole {Name = SecurityRoles.Admin});
            }

            if (!await roles.RoleExistsAsync(SecurityRoles.IT))
            {
                await roles.CreateAsync(new IdentityRole { Name = SecurityRoles.IT });
            }

            if (!await roles.RoleExistsAsync(SecurityRoles.Accounting))
            {
                await roles.CreateAsync(new IdentityRole { Name = SecurityRoles.Accounting });
            }


            if (user == null)
            {
                user = new CustomUser
                {
                    UserName = email,
                    Email = email,
                    FirstName = "Super",
                    LastName = "Admin"
                };

                await UserManager.CreateAsync(user, password);
            }
            else
            {
                //await UserManager.AddToRoleAsync(user.Id, SecurityRoles.Admin);
            }


            return Content("Hello, Index");
        }
Example #12
0
        //
        // GET: /Manage/Index
        public virtual async Task <ActionResult> Index(ManageMessageId?message)
        {
            ViewBag.StatusMessage =
                message == ManageMessageId.ChangePasswordSuccess ? "Your password has been changed."
                : message == ManageMessageId.SetPasswordSuccess ? "Your password has been set."
                : message == ManageMessageId.SetTwoFactorSuccess ? "Your two-factor authentication provider has been set."
                : message == ManageMessageId.Error ? "An error has occurred."
                : message == ManageMessageId.AddPhoneSuccess ? "Your phone number was added."
                : message == ManageMessageId.RemovePhoneSuccess ? "Your phone number was removed."
                : "";

            var userId = User.Identity.GetUserId();
            var model  = new IndexViewModel
            {
                HasPassword       = HasPassword(),
                PhoneNumber       = await CustomUser.GetPhoneNumberAsync(userId),
                TwoFactor         = await CustomUser.GetTwoFactorEnabledAsync(userId),
                Logins            = await CustomUser.GetLoginsAsync(userId),
                BrowserRemembered = await AuthenticationManager.TwoFactorBrowserRememberedAsync(userId)
            };

            return(View(model));
        }
        public async Task <IActionResult> ManageRole(List <string> userId, string role)
        {
            if (!(await _customRoleService.IsUserInRoleAsync(await _userManager.GetUserAsync(User), Roles.DemoUser.ToString())))
            {
                foreach (var id in userId)
                {
                    CustomUser user = await _dbContext.Users.FindAsync(id);

                    if (!await _customRoleService.IsUserInRoleAsync(user, role))
                    {
                        var userRole = await _customRoleService.ListUserRoleAsync(user);

                        foreach (var roles in userRole)
                        {
                            await _customRoleService.RemoveUserFromRoleAsync(user, roles);
                        }
                        await _customRoleService.AddUserToRoleAsync(user, role);
                    }
                }
                return(View());
            }
            return(RedirectToAction("DemoUser", "Projects"));
        }
Example #14
0
        //
        // GET: /Manage/ManageLogins
        public virtual async Task <ActionResult> ManageLogins(ManageMessageId?message)
        {
            ViewBag.StatusMessage =
                message == ManageMessageId.RemoveLoginSuccess ? "The external login was removed."
                : message == ManageMessageId.Error ? "An error has occurred."
                : "";
            var user = await CustomUser.FindByIdAsync(User.Identity.GetUserId());

            if (user == null)
            {
                return(View("Error"));
            }
            var userLogins = await CustomUser.GetLoginsAsync(User.Identity.GetUserId());

            var otherLogins = AuthenticationManager.GetExternalAuthenticationTypes().Where(auth => userLogins.All(ul => auth.AuthenticationType != ul.LoginProvider)).ToList();

            ViewBag.ShowRemoveButton = user.Password != null || userLogins.Count > 1;
            return(View(new ManageLoginsViewModel
            {
                CurrentLogins = userLogins,
                OtherLogins = otherLogins
            }));
        }
Example #15
0
        public ActionResult <CustomUser> Login(CustomUser user)
        {
            var isValid = _context.UserItems.Any(u => u.Email.Equals(user.Email) &&
                                                 u.Password.Equals(user.Password));
            var User = _context.UserItems.Where(u => u.Email == user.Email).FirstOrDefault();

            //var projectName = _context.Project.Where(p => p.ProjectId == User.ProjectId).FirstOrDefault().ProjectName;

            if (isValid)
            {
                CustomUser customUser = new CustomUser
                {
                    UserId   = User.UserId,
                    UserName = User.UserName,
                    Email    = user.Email,
                    //ProjectName = projectName,
                    ProjectId = User.ProjectId,
                };
                return(customUser);
            }

            return(null);
        }
Example #16
0
        public async Task <IActionResult> ChangePassword(ChangePasswordVM changePasswordVM)
        {
            if (!ModelState.IsValid)
            {
                return(View(changePasswordVM));
            }

            string     activeUserName   = User.Identity.Name;
            CustomUser customUserFromDb = await _userManager.FindByNameAsync(activeUserName);

            IdentityResult result = await _userManager.ChangePasswordAsync(customUserFromDb, changePasswordVM.CurrentPassword, changePasswordVM.NewPassword);

            await _userManager.UpdateAsync(customUserFromDb);

            if (!result.Succeeded)
            {
                ModelState.AddModelError("", "Hazırki şifrə yanlışdır və ya yeni şifrə tələblərə uyğun deyil.");
                return(View(changePasswordVM));
            }

            TempData["PasswordChanged"] = true;
            return(RedirectToAction("List", "Employee"));
        }
Example #17
0
        public ActionResult <CustomUser> Register([FromBody] UserCredentials credentials)
        {
            var userExists = _users
                             .OfType <CustomUser>()
                             .FindSync(user => user.Email == credentials.Email)
                             .Any();

            if (userExists)
            {
                return(BadRequest("User is already registered!"));
            }

            var customUser = new CustomUser
            {
                Id           = Guid.NewGuid().ToString(),
                Email        = credentials.Email,
                PasswordHash = HashPassword(credentials.Password)
            };

            _users.InsertOne(customUser);

            return(customUser);
        }
Example #18
0
        public async Task <IActionResult> Register([FromBody] UserViewModel user)
        {
            if (user == null || !ModelState.IsValid)
            {
                return(BadRequest());
            }

            CustomUser customUser = new CustomUser {
                UserName = user.UserName, Email = user.Email
            };
            IdentityResult result = await _userManager.CreateAsync(customUser, user.Password);

            if (result.Succeeded)
            {
                IdentityResult claimIdentityResult = await _userManager.AddClaimAsync(customUser, new Claim(ClaimTypes.Role, user.Role));

                if (claimIdentityResult.Succeeded)
                {
                    return(Created(string.Empty, null));
                }
            }
            return(StatusCode(500, result.Errors));
        }
        public async Task <IActionResult> Register(RegisterViewModel model, string returnUrl = null)
        {
            ViewData["ReturnUrl"] = returnUrl;
            if (ModelState.IsValid)
            {
                CustomUser user = new CustomUser {
                    UserName = model.Email, Email = model.Email
                };
                var result = await _userManager.CreateAsync(user, model.Password);

                if (result.Succeeded)
                {
                    _logger.LogInformation("User Created a new account with password");
                    await _signInManager.SignInAsync(user, isPersistent : false);

                    _logger.LogInformation("User Created a new account with password");
                    return(RedirectToLocal(returnUrl));
                }

                AddErrors(result);
            }
            return(View(model));
        }
        public List <OrderInvoiceViewModel> CreateOrderInvoiceList(CustomUser user)
        {
            List <OrderInvoiceViewModel> oivmList = new List <OrderInvoiceViewModel>();

            List <OrderInventory> oList = new List <OrderInventory>();

            foreach (OrderInventory o in _repo.orderInventories)
            {
                foreach (Order order in _repo.orders)
                {
                    if (order.Id == user.Id && o.OrderId == order.OrderId)
                    {
                        oList.Add(o);
                    }
                }
            }
            foreach (OrderInventory o in _repo.orderInventories)
            {
                Product p = _repo.products.FirstOrDefault(x => x.ProductId == o.ProductId);
                oivmList.Add(_mapper.CreateOrderInvoiceViewModel(user, p, o));
            }
            return(oivmList);
        }
Example #21
0
        private async Task CreateRoles(IServiceProvider serviceProvider)
        {
            var RoleManager = serviceProvider.GetRequiredService <RoleManager <CustomRole> >();
            var UserManager = serviceProvider.GetRequiredService <UserManager <CustomUser> >();

            string[]       roleNames = { "Admin" };
            IdentityResult roleResult;

            foreach (var roleName in roleNames)
            {
                var roleExist = await RoleManager.RoleExistsAsync(roleName);

                if (!roleExist)
                {
                    roleResult = await RoleManager.CreateAsync(new CustomRole(roleName));
                }
            }

            var _user = await UserManager.FindByEmailAsync("*****@*****.**");

            if (_user == null)
            {
                var adminUser = new CustomUser
                {
                    UserName = "******",
                    Email    = "*****@*****.**",
                };
                string adminPassword = "******";

                var createAdminUser = await UserManager.CreateAsync(adminUser, adminPassword);

                if (createAdminUser.Succeeded)
                {
                    await UserManager.AddToRoleAsync(adminUser, "Admin");
                }
            }
        }
        public async Task <IActionResult> Post([FromBody] RegisterModel model)
        {
            try
            {
                var newUser = new CustomUser {
                    FirstName = model.FirstName, LastName = model.LastName, UserName = model.Email, Email = model.Email
                };
                var result = await _userManager.CreateAsync(newUser, model.Password);

                if (!result.Succeeded)
                {
                    var errors = result.Errors.Select(x => x.Description);
                    return(Ok(new RegisterResult {
                        Successful = false, Errors = errors
                    }));
                }

                // Add all new users to the User role
                await _userManager.AddToRoleAsync(newUser, "User");

                // Add new users whose email starts with 'admin' to the Admin role
                if (newUser.Email.StartsWith("azur"))
                {
                    await _userManager.AddToRoleAsync(newUser, "Admin");
                }

                return(Ok(new RegisterResult {
                    Successful = true
                }));
            }
            catch
            {
                return(Ok(new RegisterResult {
                    Successful = false
                }));
            }
        }
Example #23
0
        public void CallUnitOfWork_CommitOnce_WhenCalledWithIntId()
        {
            // Arrange
            var mockedUserService = new Mock <IUserService>();
            var user = new CustomUser()
            {
                Id = 1
            };

            mockedUserService.Setup(x => x.GetByIndentityId(It.IsAny <string>())).Returns(user);
            var mockedStatisticRepository = new Mock <IEFRepository <Statistic> >();
            var statistic = new Statistic()
            {
                CustomUserId = 1
            };
            var statistics = new List <Statistic>()
            {
                statistic
            }.AsQueryable();

            mockedStatisticRepository.Setup(x => x.All).Returns(statistics);
            var mockedUnitOfWork       = new Mock <IUnitOfWork>();
            var mockedStatisticFactory = new Mock <IStatisticFactory>();

            var statisticService = new StatisticService(
                mockedUserService.Object,
                mockedStatisticRepository.Object,
                mockedUnitOfWork.Object,
                mockedStatisticFactory.Object);
            int userId = 1;

            // Act
            statisticService.AddNotificationStatistic(userId);

            // Assert
            mockedUnitOfWork.Verify(x => x.Commit(), Times.Once);
        }
Example #24
0
        public void IncreasedStatistic_NotificationCountWithOne_WhenCalledWithIntId()
        {
            // Arrange
            var mockedUserService = new Mock <IUserService>();
            var user = new CustomUser()
            {
                Id = 1
            };

            mockedUserService.Setup(x => x.GetByIndentityId(It.IsAny <string>())).Returns(user);
            var mockedStatisticRepository = new Mock <IEFRepository <Statistic> >();
            var statistic = new Statistic()
            {
                CustomUserId = 1
            };
            var statistics = new List <Statistic>()
            {
                statistic
            }.AsQueryable();

            mockedStatisticRepository.Setup(x => x.All).Returns(statistics);
            var mockedUnitOfWork       = new Mock <IUnitOfWork>();
            var mockedStatisticFactory = new Mock <IStatisticFactory>();

            var statisticService = new StatisticService(
                mockedUserService.Object,
                mockedStatisticRepository.Object,
                mockedUnitOfWork.Object,
                mockedStatisticFactory.Object);
            int userId = 1;

            // Act
            statisticService.AddNotificationStatistic(userId);

            // Assert
            Assert.AreEqual(statistic.NotificationsCount, 1);
        }
        public void CallUserService_GetByIndentityIdOnce()
        {
            // Arrange
            var mockedPublicationRepository = new Mock <IEFRepository <Publication> >();
            var mockedFriendsService        = new Mock <IFriendService>();
            var mockedUserService           = new Mock <IUserService>();
            var user = new CustomUser()
            {
                Publications = new List <Publication>()
            };

            mockedUserService.Setup(x => x.GetByIndentityId(It.IsAny <string>())).Returns(user);
            var mockedUnitOfWork              = new Mock <IUnitOfWork>();
            var mockedPublicationFactory      = new Mock <IPublicationFactory>();
            var mockedDateTimeService         = new Mock <IDateTimeService>();
            var mockedPublicationImageFactory = new Mock <IPublicationImageFactory>();
            var mockedCommentService          = new Mock <ICommentService>();

            var publicationService = new PublicationService(
                mockedPublicationRepository.Object,
                mockedFriendsService.Object,
                mockedUserService.Object,
                mockedUnitOfWork.Object,
                mockedPublicationFactory.Object,
                mockedDateTimeService.Object,
                mockedPublicationImageFactory.Object,
                mockedCommentService.Object);
            string userId = "test-id";
            int    skip   = 0;
            int    count  = 2;

            // Act
            publicationService.UserPublications(userId, skip, count);

            // Assert
            mockedUserService.Verify(x => x.GetByIndentityId(It.Is <string>(i => i == userId)), Times.Once);
        }
Example #26
0
        public void ReturnDefaultView()
        {
            // Arrange
            var mockedAccountService = new Mock <IAccountService>();
            var mockedUserService    = new Mock <IUserService>();
            var user = new CustomUser()
            {
                Id = 2
            };

            mockedUserService.Setup(x => x.GetById(It.IsAny <int>())).Returns(user);

            var mockedFriendService    = new Mock <IFriendService>();
            var mockedViewModelService = new Mock <IViewModelService>();
            var model = new ProfileViewModel()
            {
                Friends = new List <ProfileFriendViewModel>()
            };

            mockedViewModelService.Setup(x => x.GetMappedProfile(It.IsAny <CustomUser>())).Returns(model);

            var profileController = new ProfileController(
                mockedAccountService.Object,
                mockedUserService.Object,
                mockedFriendService.Object,
                mockedViewModelService.Object);
            int id = 4;

            // Act & Assert
            profileController
            .WithCallTo(x => x.Index(id))
            .ShouldRenderDefaultView()
            .WithModel <ProfileViewModel>(x =>
            {
                Assert.AreEqual(model, x);
            });
        }
        public void CallStatisticRepository_UpdateOnce()
        {
            // Arrange
            var mockedUserService = new Mock <IUserService>();
            var user = new CustomUser()
            {
                Id = 1
            };

            mockedUserService.Setup(x => x.GetByIndentityId(It.IsAny <string>())).Returns(user);
            var mockedStatisticRepository = new Mock <IEFRepository <Statistic> >();
            var statistic = new Statistic()
            {
                CustomUserId = 1
            };
            var statistics = new List <Statistic>()
            {
                statistic
            }.AsQueryable();

            mockedStatisticRepository.Setup(x => x.All).Returns(statistics);
            var mockedUnitOfWork       = new Mock <IUnitOfWork>();
            var mockedStatisticFactory = new Mock <IStatisticFactory>();

            var statisticService = new StatisticService(
                mockedUserService.Object,
                mockedStatisticRepository.Object,
                mockedUnitOfWork.Object,
                mockedStatisticFactory.Object);
            string userId = "some-id";

            // Act
            statisticService.AddMessageStatistic(userId);

            // Assert
            mockedStatisticRepository.Verify(x => x.Update(It.Is <Statistic>(s => s == statistic)), Times.Once);
        }
Example #28
0
        public void CallDateTimeService_GetCurrentDateOnce()
        {
            // Arrange
            var mockedPublicationRepository = new Mock <IEFRepository <Publication> >();
            var publication = new Publication();

            mockedPublicationRepository.Setup(x => x.GetById(It.IsAny <int>())).Returns(publication);
            var mockedFriendsService = new Mock <IFriendService>();
            var mockedUserService    = new Mock <IUserService>();
            var user = new CustomUser();

            mockedUserService.Setup(x => x.GetByIndentityId(It.IsAny <string>())).Returns(user);
            var mockedUnitOfWork              = new Mock <IUnitOfWork>();
            var mockedPublicationFactory      = new Mock <IPublicationFactory>();
            var mockedDateTimeService         = new Mock <IDateTimeService>();
            var mockedPublicationImageFactory = new Mock <IPublicationImageFactory>();
            var mockedCommentService          = new Mock <ICommentService>();

            var publicationService = new PublicationService(
                mockedPublicationRepository.Object,
                mockedFriendsService.Object,
                mockedUserService.Object,
                mockedUnitOfWork.Object,
                mockedPublicationFactory.Object,
                mockedDateTimeService.Object,
                mockedPublicationImageFactory.Object,
                mockedCommentService.Object);
            int    publicationId = 12;
            string content       = "some content";
            string userId        = "test-id";

            // Act
            publicationService.CreatePublicationComment(publicationId, content, userId);

            // Assert
            mockedDateTimeService.Verify(x => x.GetCurrentDate(), Times.Once);
        }
Example #29
0
        public virtual async Task <ActionResult> VerifyCode(VerifyCodeViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            // The following code protects for brute force attacks against the two factor codes.
            // If a user enters incorrect codes for a specified amount of time then the user account
            // will be locked out for a specified amount of time.
            // You can configure the account lockout settings in IdentityConfig
            var result = await CustomSignIn.TwoFactorSignInAsync(model.Provider, model.Code, isPersistent : model.RememberMe, rememberBrowser : model.RememberBrowser);

            switch (result)
            {
            case SignInStatus.Success:
                var userId = await CustomSignIn.GetVerifiedUserIdAsync().WithCurrentCulture();

                var accountBL = ServiceLocator.Current.GetInstance <IAccountBL>();
                await accountBL.ApproveVerification(Convert.ToInt32(userId));

                AuthenticationManager.SignOut(DefaultAuthenticationTypes.ApplicationCookie);
                var user = await CustomUser.FindByIdAsync(userId);

                await CustomSignIn.SignInAsync(user, model.RememberMe, model.RememberBrowser);

                return(RedirectToLocal(model.ReturnUrl));

            case SignInStatus.LockedOut:
                return(View("Lockout"));

            case SignInStatus.Failure:
            default:
                ModelState.AddModelError("", "Invalid code.");
                return(View(model));
            }
        }
Example #30
0
        public async Task <IActionResult> CreateUser(RegisterViewModel model)
        {
            if (ModelState.IsValid)
            {
                var user = new CustomUser
                {
                    UserName = model.Email,
                    Email    = model.Email,
                    R        = 1.5,
                    P        = 1000,
                    C        = 678,
                    A        = 2000,
                    K0       = 0.65,
                    K1       = 1.25,
                    K2       = 1.85,
                    K3       = 2.45,
                    Func     = "-2*x + 4*x^2/3 - 7"
                };

                var result = await _userManager.CreateAsync(user, model.Password);

                if (result.Succeeded)
                {
                    var token = await _userManager.GenerateEmailConfirmationTokenAsync(user);

                    await _userManager.ConfirmEmailAsync(user, token);

                    return(RedirectToAction("Index", "Home"));
                }
                foreach (var error in result.Errors)
                {
                    ModelState.AddModelError(string.Empty, error.Description);
                }
            }
            return(View(model));
        }
        public async Task <IActionResult> MyLists(string name)
        {
            if (name == null)
            {
                return(NotFound());
            }
            CustomUser customUserFromDb = await _userManager.FindByNameAsync(name);

            if (customUserFromDb == null)
            {
                return(NotFound());
            }
            IEnumerable <Announcement> announcements = _context.Announcements.Where(announce => announce.CustomUserId == customUserFromDb.Id)
                                                       .Include(announce => announce.Automobile)
                                                       .ThenInclude(announce => announce.Model)
                                                       .ThenInclude(announce => announce.Brand)
                                                       .Include(announce => announce.Location)
                                                       .Include(announce => announce.Automobile)
                                                       .ThenInclude(announce => announce.Color)
                                                       .Include(announce => announce.Automobile)
                                                       .ThenInclude(announce => announce.Fuel);

            return(View(announcements));
        }
Example #32
0
        public void CallUserService_GetByIndentityIdOnce()
        {
            // Arrange
            var mockedUserService = new Mock <IUserService>();
            var user = new CustomUser()
            {
                Id = 1
            };

            mockedUserService.Setup(x => x.GetByIndentityId(It.IsAny <string>())).Returns(user);
            var mockedStatisticRepository = new Mock <IEFRepository <Statistic> >();
            var statistics = new List <Statistic>()
            {
                new Statistic()
                {
                    CustomUserId = 1
                }
            }.AsQueryable();

            mockedStatisticRepository.Setup(x => x.All).Returns(statistics);
            var mockedUnitOfWork       = new Mock <IUnitOfWork>();
            var mockedStatisticFactory = new Mock <IStatisticFactory>();

            var statisticService = new StatisticService(
                mockedUserService.Object,
                mockedStatisticRepository.Object,
                mockedUnitOfWork.Object,
                mockedStatisticFactory.Object);
            string userId = "some-id";

            // Act
            statisticService.RemoveNotificationStatistic(userId);

            // Assert
            mockedUserService.Verify(x => x.GetByIndentityId(It.Is <string>(i => i == userId)), Times.Once);
        }
        public async Task <IActionResult> ChangePassword(ChangePasswordVM changePasswordVM)
        {
            if (!ModelState.IsValid)
            {
                return(View(changePasswordVM));
            }

            currentUser = await MainUtility.FindAnActiveUser(_userManager, User.Identity.Name);

            CustomUser customUserFromDb = await _userManager.FindByIdAsync(currentUser.Id);

            IdentityResult result = await _userManager.ChangePasswordAsync(customUserFromDb, changePasswordVM.CurrentPassword, changePasswordVM.NewPassword);

            await _userManager.UpdateAsync(customUserFromDb);

            if (!result.Succeeded)
            {
                ModelState.AddModelError("", "Hazırki şifrə yanlışdır və ya yeni şifrə tələblərə uyğun deyil.");
                return(View(changePasswordVM));
            }

            TempData["PasswordChanged"] = true;
            return(RedirectToAction("MyPosts", "Profile", new { userId = currentUser.Id }));
        }
        public Order PlaceOrder(CustomUser user)
        {
            List <InvoiceViewModel> ivmList = CreateInvoiceList(user);
            Order order = new Order()
            {
                CartId     = user.CartId,
                Id         = user.Id,
                LocationId = ivmList.FirstOrDefault(x => x.Id == user.Id).LocationId,
                OrderTime  = DateTime.Now,
                OrderTotal = ivmList.Sum(x => x.LineTotal)
            };

            _repo.orders.Add(order);
            foreach (InvoiceViewModel ivm in ivmList)
            {
                _repo.orderInventories.Add(new OrderInventory()
                {
                    OrderId = order.OrderId, ProductId = ivm.Product.ProductId, OrderQuantity = ivm.Quantity
                });
            }
            EmptyCurrentCart(user);
            _repo.CommitSave();
            return(order);
        }
Example #35
0
        private async Task <string> EnsureUser(IServiceProvider serviceProvider,
                                               string testUserPw, string UserName)
        {
            var userManager = serviceProvider.GetService <ICustomUserManager>();

            var user = await userManager.FindByNameAsync(UserName);

            if (user == null)
            {
                user = new CustomUser
                {
                    UserName       = UserName,
                    EmailConfirmed = true
                };
                var result = await userManager.CreateAsync(user, testUserPw);
            }

            if (user == null)
            {
                throw new Exception("The password is probably not strong enough!");
            }

            return(user.Id);
        }
        private void CreateAndLoginUser()
        {
            if (!IsValid)
            {
                return;
            }
            var manager       = Context.GetOwinContext().GetUserManager <ApplicationUserManager>();
            var signInManager = Context.GetOwinContext().GetUserManager <ApplicationSignInManager>();
            var user          = new CustomUser {
                UserName = email.Text, Email = email.Text
            };
            IdentityResult result = manager.Create(user);

            if (result.Succeeded)
            {
                var loginInfo = Context.GetOwinContext().Authentication.GetExternalLoginInfo();
                if (loginInfo == null)
                {
                    RedirectOnFail();
                    return;
                }
                result = manager.AddLogin(user.Id, loginInfo.Login);
                if (result.Succeeded)
                {
                    signInManager.SignIn(user, isPersistent: false, rememberBrowser: false);

                    // For more information on how to enable account confirmation and password reset please visit https://go.microsoft.com/fwlink/?LinkID=320771
                    // var code = manager.GenerateEmailConfirmationToken(user.Id);
                    // Send this link via email: IdentityHelper.GetUserConfirmationRedirectUrl(code, user.Id)

                    IdentityHelper.RedirectToReturnUrl(Request.QueryString["ReturnUrl"], Response);
                    return;
                }
            }
            AddErrors(result);
        }
Example #37
0
        public async Task CreateTemporaryUserAsync()
        {
            string IpAdress     = _userDetector.GetUserIpAdress();
            string connectionId = _userDetector.GetUserConnectionId();

            if (_context.Users.FirstOrDefault(u => u.IpAdress == IpAdress && u.ConnectionId == connectionId) == null)
            {
                var NumberOfUser = _context.Users.ToList().Count() + 1;
                var tempEmail    = "tempUser" + NumberOfUser.ToString() + "@lanonlinemarket.com";
                var userName     = tempEmail;

                var user = new CustomUser
                {
                    UserName       = userName,
                    Email          = tempEmail,
                    FirstName      = "User",
                    LastName       = $"#{NumberOfUser}",
                    IpAdress       = IpAdress,
                    ConnectionId   = connectionId,
                    ImageData      = null,
                    ContentType    = null,
                    Street         = null,
                    State          = null,
                    City           = null,
                    Zipcode        = null,
                    EmailConfirmed = true
                };
                var result = await _userManager.CreateAsync(user, "Abc123!");

                if (result.Succeeded)
                {
                    _logger.LogInformation("User created a new account with password.");
                    await _userManager.AddToRoleAsync(user, "TemporaryUser");
                }
            }
        }
Example #38
0
        public async Task<ActionResult> Register(RegisterViewModel model)
        {
            if (ModelState.IsValid)
            {
                var user = new CustomUser { UserName = model.Email, Email = model.Email };
                var result = await UserManager.CreateAsync(user, model.Password);
                if (result.Succeeded)
                {
                    await SignInManager.SignInAsync(user, isPersistent:false, rememberBrowser:false);
                    
                    // For more information on how to enable account confirmation and password reset please visit https://go.microsoft.com/fwlink/?LinkID=320771
                    // Send an email with this link
                    // string code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id);
                    // var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = code }, protocol: Request.Url.Scheme);
                    // await UserManager.SendEmailAsync(user.Id, "Confirm your account", "Please confirm your account by clicking <a href=\"" + callbackUrl + "\">here</a>");

                    return RedirectToAction("Index", "Home");
                }
                AddErrors(result);
            }

            // If we got this far, something failed, redisplay form
            return View(model);
        }
        public void CallUserRepository_GetByIdOnce()
        {
            // Arrange
            var mockedAspIdentityUserFactory = new Mock <IAspIdentityUserFactory>();
            var mockedUserFactory            = new Mock <ICustomUserFactory>();
            var mockedUserRepository         = new Mock <IEFRepository <CustomUser> >();
            var user = new CustomUser()
            {
                ProfileImage = new ProfileImage()
                {
                    Content = new byte[] { 1, 2 }
                }
            };

            mockedUserRepository.Setup(x => x.GetById(It.IsAny <int>())).Returns(user);
            var mockedUnitOfWork         = new Mock <IUnitOfWork>();
            var mockedImageService       = new Mock <IImageService>();
            var mockedProfileLogoFactory = new Mock <IProfileLogoFactory>();

            var accountService = new AccountService(
                mockedAspIdentityUserFactory.Object,
                mockedUserFactory.Object,
                mockedUserRepository.Object,
                mockedUnitOfWork.Object,
                mockedImageService.Object,
                mockedProfileLogoFactory.Object);

            var stream = new MemoryStream();
            int id     = 2;

            // Act
            accountService.ChangeProfileImage(stream, id);

            // Assert
            mockedUserRepository.Verify(x => x.GetById(It.Is <int>(i => i == id)), Times.Once);
        }
        public void Initialize()
        {
            int index     = 0;
            int max_index = 100;

            db_user        = DBCustomUser.GetInstance();
            db_product     = DB_Product.GetInstance();
            db_userproduct = DB_UserProduct.GetInstance();
            Product product;

            user = new CustomUser
            {
                Username = "******",
                Password = "******",
                Email    = "ClassLibriry1 - Test UserProduct Database - User",
                Wallet   = 5000.0,
                IsActive = true,
                LoggedIn = true
            };

            db_user.CreateUser(user);

            while (index < max_index)
            {
                product = new Product
                {
                    Name  = "ClassLibriry1 - Test UserProduct Database - Product",
                    Price = 50.0 + (double)index
                };

                db_product.CreateProduct(product);
                index++;
            }

            products = db_product.FindProductByPriceHigher(25.0);
        }
Example #41
0
        /// <summary>
        /// Пользователи, которые входят в группу
        /// </summary>
        /// <param name="groupName"></param>
        /// <returns></returns>
        public static CustomUserList GetGroupUsers(string groupName)
        {
            var result = new CustomUserList();

            using (var ctx = new PrincipalContext(ContextType.Domain))
                using (var groupPrincipal = GroupPrincipal.FindByIdentity(ctx, groupName))
                {
                    if (groupPrincipal != null)
                    {
                        foreach (UserPrincipal user in groupPrincipal.GetMembers(true))
                        {
                            if (user.Enabled == true)
                            {
                                HasUserInfo ifUser = new PrUser(user);

                                var OutUser = new CustomUser(ifUser);

                                result.Add(OutUser);
                            }
                        }
                    }
                }
            return(result);
        }
        public async Task<ActionResult> Register(RegisterViewModel model)
        {
            if (ModelState.IsValid)
            {
                var user = new CustomUser { UserName = model.Email, Email = model.Email };
                var result = await UserManager.CreateAsync(user, model.Password);
                if (result.Succeeded)
                {
                    var code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id);
                    var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = code }, protocol: Request.Url.Scheme);
                    await UserManager.SendEmailAsync(user.Id, "Confirm your account", "Please confirm your account by clicking this link: <a href=\"" + callbackUrl + "\">link</a>");
                    ViewBag.Link = callbackUrl;
                    return View("DisplayEmail");
                }

                AddErrors(result);
            }

            // If we got this far, something failed, redisplay form
            return View(model);
        }
        public async Task<ActionResult> ExternalLoginConfirmation(ExternalLoginConfirmationViewModel model, string returnUrl)
        {
            if (User.Identity.IsAuthenticated)
            {
                return RedirectToAction("Index", "Manage");
            }

            if (ModelState.IsValid)
            {
                // Get the information about the user from the external login provider
                var info = await AuthenticationManager.GetExternalLoginInfoAsync();
                if (info == null)
                {
                    return View("ExternalLoginFailure");
                }
                var user = new CustomUser { UserName = model.Email, Email = model.Email };
                var result = await UserManager.CreateAsync(user);
                if (result.Succeeded)
                {
                    result = await UserManager.AddLoginAsync(user.Id, info.Login);
                    if (result.Succeeded)
                    {
                        await SignInManager.SignInAsync(user, isPersistent: false, rememberBrowser: false);
                        return RedirectToLocal(returnUrl);
                    }
                }
                AddErrors(result);
            }

            ViewBag.ReturnUrl = returnUrl;
            return View(model);
        }
Example #44
0
        public void UpdateUser(CustomUser customUser)
        {
            if (customUser == null)
            {
                throw new ArgumentNullException();
            }

            if (GetUserById(customUser.Id) == null)
            {
                throw new InvalidOperationException("Cannot edit user with id: " + customUser.Id + ". User does not exist.");
            }

            if (GetUserElementsByEmail(customUser.EmailAddress).Count() > 1)
            {
                throw new InvalidOperationException("Cannot edit the email because another user with the same email already exists: " + customUser.EmailAddress);
            }

            var user = xmlUserMap.Map(customUser);

            GetUserElementsById(customUser.Id).Remove();

            GetUsersParentNode().Add(user);

            CheckSync();
        }
        public override MembershipUser CreateUser(string username, string password, string email, string passwordQuestion, string passwordAnswer, bool isApproved, object providerUserKey, out MembershipCreateStatus status)
        {
            bool isValid = true;
            MembershipUser newUser = null;
            status = MembershipCreateStatus.Success;

            DateTime currentDate = DateTime.Now;

            if (username == null || username.Trim().Length == 0)
            {
                status = MembershipCreateStatus.InvalidUserName;
                isValid = false;
            }

            if (isValid && (password == null || password.Trim().Length == 0))
            {
                status = MembershipCreateStatus.InvalidPassword;
                isValid = false;
            }

            // only validate the e-mail format in case it is neither null nor empty
            if (isValid && !String.IsNullOrWhiteSpace(email))
            {
                String strRegex = @"^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}" +
                                  @"\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\" +
                                  @".)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$";

                Regex regex = new Regex(strRegex);

                if (!regex.IsMatch(email))
                {
                    status = MembershipCreateStatus.InvalidEmail;
                    isValid = false;
                }
            }

            CustomUserDAO userDAO = new CustomUserDAO();

            /*
             * Validate e-mail for the case where it is required to be unique. Here the
             * API states that if so, there MUST be an e-mail provided, as stated in:
             * http://msdn.microsoft.com/en-us/library/d8t4h2es.aspx
             *
             * You can see that in the following part:
             *
             * "The SqlMembershipProvider provides an option to require a unique e-mail
             * address for each user. If the RequiresUniqueEmail property is true, you
             * will need to use one of the CreateUser overloads that allows you to specify
             * an e-mail address for the user being created. Otherwise, a
             * MembershipCreateUserException will be thrown."
             *
             */
            if (isValid && RequiresUniqueEmail)
            {
                // the e-mail cannot be null nor empty
                if (String.IsNullOrWhiteSpace(email))
                {
                    status = MembershipCreateStatus.InvalidEmail;
                    isValid = false;
                }

                // since the validation above passed, check whether the e-mail is unique
                if (isValid)
                {
                    CustomUser sameEmailUser = userDAO.FindByEmail(email, this.ApplicationName);
                    if (sameEmailUser != null)
                    {
                        status = MembershipCreateStatus.DuplicateEmail;
                        isValid = false;
                    }
                }
            }

            // validates password
            if (isValid)
            {
                ValidatePasswordEventArgs args = new ValidatePasswordEventArgs(username, password, true);
                OnValidatingPassword(new ValidatePasswordEventArgs(username, password, true));
                if (args.Cancel)
                {
                    status = MembershipCreateStatus.InvalidPassword;
                    isValid = false;
                }
            }

            if (providerUserKey == null)
            {
                providerUserKey = Guid.NewGuid();
            }
            else if (!(providerUserKey is Guid))
            {
                status = MembershipCreateStatus.InvalidProviderUserKey;
                isValid = false;
            }

            if (isValid)
            {
                CustomUser sameNameUser = userDAO.FindByName(username, this.appName);
                if (sameNameUser != null)
                {
                    status = MembershipCreateStatus.DuplicateUserName;
                    isValid = false;
                }
            }

            if (isValid)
            {
                CustomUser user = new CustomUser(this.membershipApplication,
                                                 (Guid) providerUserKey,
                                                 username,
                                                 MembershipEncryptionManager.Encrypt(password, PasswordFormat),
                                                 email,
                                                 passwordQuestion,
                                                 passwordAnswer,
                                                 isApproved,
                                                 false,
                                                 currentDate,
                                                 currentDate,
                                                 currentDate,
                                                 currentDate);
                userDAO.SaveOrUpdate(user);
                newUser = CreateMembershipUser(user);
                status = MembershipCreateStatus.Success;
            }
            return newUser;
        }
 public override MembershipUser CreateUser(string username, string password, string email, string passwordQuestion, string passwordAnswer, bool isApproved, object providerUserKey, out MembershipCreateStatus status)
 {
     CustomUser NewUser = new CustomUser(username, password);
     DataStorageForJson.AddNewUser(NewUser);
     status = MembershipCreateStatus.Success;
     return this.GetUser(username, true);
 }
 private MembershipUser CreateMembershipUser(CustomUser user)
 {
     DateTime theDateTime = new DateTime();
     return new MembershipUser(providerName,
                               user.Name,
                               user.Id,
                               user.Email,
                               user.PasswordQuestion,
                               user.Comment,
                               user.IsApproved.HasValue ? user.IsApproved.Value : true,
                               user.IsLockedOut.HasValue ? user.IsLockedOut.Value : false,
                               user.CreationDate = user.CreationDate,
                               user.LastLoginDate.HasValue ? user.LastLoginDate.Value : theDateTime,
                               user.LastActivityDate.HasValue ? user.LastActivityDate.Value : theDateTime,
                               user.LastPasswordChangedDate.HasValue ? user.LastPasswordChangedDate.Value : theDateTime,
                               user.LastLockedOutDate.HasValue ? user.LastLockedOutDate.Value : theDateTime);
 }
        protected async Task SignInAsync(CustomUser user, bool isPersistent)
        {
            AuthenticationManager.SignOut(
                DefaultAuthenticationTypes.ExternalCookie,
                DefaultAuthenticationTypes.TwoFactorCookie
            );

            AuthenticationManager.SignIn(
                new AuthenticationProperties { IsPersistent = isPersistent },
                UserManager.CreateIdentityAsync(user, DefaultAuthenticationTypes.ApplicationCookie).Result
           );
        }