public async Task <RegistrationModel> OnRegistration(RegistrationInputModel input)
        {
            RegistrationModel result = new RegistrationModel();

            if (string.IsNullOrEmpty(input.username) || string.IsNullOrEmpty(input.firstName) ||
                string.IsNullOrEmpty(input.lastName) || string.IsNullOrEmpty(input.password))
            {
                result.GenerateError("Неки од података фале!");
                return(result);
            }

            // check if there is account with same username
            var db = ARDirect.Instance;

            if (await ARDirect.Instance.Query <ClientDM>().Where("username={0}", input.username).CountAsync() > 0)
            {
                result.GenerateError("Корисничко име је заузето. Одаберите неко друго!");
                return(result);
            }

            ClientDM client = new ClientDM(db)
            {
                username  = input.username,
                password  = DirectPassword.Hash(input.password),
                firstName = input.firstName,
                lastName  = input.lastName
            };
            await client.InsertAsync();

            this.Notify(Sockets.Dashboard.Models.DashboardModel.FunctionTypes.notifySuccess, $"Нови корисник се регистровао: '${client.username}'!");

            return(result);
        }
예제 #2
0
        public JsonResult ExtendedRegistration(RegistrationInputModel inputModel)
        {
            JsonResult result;

            try
            {
                Assert.ArgumentNotNull(inputModel, "RegistrationInputModel");
                RegistrationBaseJsonResult registrationBaseJsonResult = new RegistrationBaseJsonResult(StorefrontContext, SitecoreContext);
                ValidateModel(registrationBaseJsonResult);
                if (registrationBaseJsonResult.HasErrors)
                {
                    result = Json(registrationBaseJsonResult, JsonRequestBehavior.AllowGet);
                }
                else
                {
                    ManagerResponse <CreateUserResult, CommerceUser> managerResponse = AccountManager.RegisterUser(StorefrontContext, UpdateUserName(inputModel.UserName), inputModel.Password, inputModel.UserName);
                    if (managerResponse.ServiceProviderResult.Success && managerResponse.Result != null)
                    {
                        registrationBaseJsonResult.Initialize(managerResponse.Result);
                        AccountManager.Login(StorefrontContext, VisitorContext, managerResponse.Result.UserName, inputModel.Password, false);
                        AccountManager.UpdateUser(VisitorContext, inputModel.FirstName, inputModel.LastName, string.Empty, inputModel.UserName);
                    }
                    else
                    {
                        registrationBaseJsonResult.SetErrors(managerResponse.ServiceProviderResult);
                    }
                    result = Json(registrationBaseJsonResult);
                }
            }
            catch (Exception exception)
            {
                result = Json(new BaseJsonResult("Registration", exception, StorefrontContext, SitecoreContext), JsonRequestBehavior.AllowGet);
            }
            return(result);
        }
        public IActionResult Post([FromBody] RegistrationInputModel inputModel)
        {
            if (inputModel.Username == null || inputModel.Password == null)
            {
                return(BadRequest("Username is empty"));
            }

            if (!Regex.IsMatch(inputModel.Username, "[A-Za-z0123456789\\-\\._@\\+]{3,}"))
            {
                return(BadRequest("Username should conains only letters or numbers or _@.+."));
            }

            if (inputModel.Password.Length <= 6)
            {
                return(BadRequest("Password should contains more than 6 symbols"));
            }

            if (_userManager.GetByNickName(inputModel.Username) != null)
            {
                return(BadRequest("Username is already exists"));
            }

            var result = _userManager.AddOrUpdate(CreateUserEntity(inputModel));

            if (result == null || result.Id <= 0)
            {
                return(StatusCode(500));
            }

            return(Login(inputModel.Username, inputModel.Password));
        }
        public async Task <bool> RegisterUser(RegistrationInputModel registrationInputModel)
        {
            bool Success = false;

            Success = await _IAuthService.RegisterUser(registrationInputModel);

            return(Success);
        }
 private UserEntity CreateUserEntity(RegistrationInputModel model)
 {
     return(new UserEntity
     {
         Login = model.Username,
         PasswordSalt = model.Password,                 // TODO AF: Put the salt in
     });
 }
예제 #6
0
        public async Task <IActionResult> ExternalLogin(RegistrationInputModel registrationInputModel)
        {
            var provider = registrationInputModel.Provider;
            var props    = new AuthenticationProperties()
            {
                RedirectUri = Url.Action("ExternalLoginCallback"),
                Items       =
                {
                    { "returnUrl", registrationInputModel.ReturnUrl }
                }
            };

            // windows authentication needs special handling
            // since they don't support the redirect uri,
            // so this URL is re-triggered when we call challenge
            if (AccountOptions.WindowsAuthenticationSchemeName == provider)
            {
                // see if windows auth has already been requested and succeeded
                var result = await HttpContext.AuthenticateAsync(AccountOptions.WindowsAuthenticationSchemeName);

                if (result?.Principal is WindowsPrincipal wp)
                {
                    props.Items.Add("scheme", AccountOptions.WindowsAuthenticationSchemeName);

                    var id = new ClaimsIdentity(provider);
                    id.AddClaim(new Claim(JwtClaimTypes.Subject, wp.Identity.Name));
                    id.AddClaim(new Claim(JwtClaimTypes.Name, wp.Identity.Name));

                    // add the groups as claims -- be careful if the number of groups is too large
                    if (AccountOptions.IncludeWindowsGroups)
                    {
                        var wi     = wp.Identity as WindowsIdentity;
                        var groups = wi.Groups.Translate(typeof(NTAccount));
                        var roles  = groups.Select(x => new Claim(JwtClaimTypes.Role, x.Value));
                        id.AddClaims(roles);
                    }

                    await HttpContext.SignInAsync(
                        IdentityServer4.IdentityServerConstants.ExternalCookieAuthenticationScheme,
                        new ClaimsPrincipal(id),
                        props);

                    return(Redirect(props.RedirectUri));
                }
                else
                {
                    // challenge/trigger windows auth
                    return(Challenge(AccountOptions.WindowsAuthenticationSchemeName));
                }
            }
            else
            {
                // start challenge and roundtrip the return URL
                props.Items.Add("scheme", provider);
                return(Challenge(props, provider));
            }
        }
예제 #7
0
 /// <summary>
 /// On Init
 /// </summary>
 protected override void OnInitialized()
 {
     Model = new RegistrationInputModel();
     RegistrationContext = new EditContext(Model);
     base.OnInitialized();
     if (AuthenticationService.IsLoggedIn())
     {
         NavigationManager.NavigateTo("/");
     }
 }
예제 #8
0
        private static RegistrationInputModel GetRequestingMetadata(
            this INugetServerProvider provider,
            HttpContext context)
        {
            var model = new RegistrationInputModel(
                context.GetBaseUrl(),
                context.Request.Path);

            return(model);
        }
예제 #9
0
        public IActionResult RegisterUser(RegistrationInputModel registrationInputModel)
        {
            var vm = new RegisterUserViewModel
            {
                ReturnUrl      = registrationInputModel.ReturnUrl,
                Provider       = registrationInputModel.Provider,
                ProviderUserId = registrationInputModel.ProviderUserId
            };

            return(View(vm));
        }
예제 #10
0
        public RedirectToActionResult Register(RegistrationInputModel inputModel)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    string browserInfo = "Unable to determine"; // defaults
                    string deviceInfo  = "Unable to determine"; // defaults

                    if (!Convert.ToBoolean(Configuration["MockData.Enabled"]))
                    {
                        try
                        {
                            UserAgentHelper.SetUserAgent(Request.Headers["User-Agent"]);
                            browserInfo = UserAgentHelper.Browser.Name + " " + UserAgentHelper.Browser.Version + " " + UserAgentHelper.Browser.Major;
                            deviceInfo  = UserAgentHelper.OS.Name + " " + UserAgentHelper.OS.Version;
                        }
                        catch { }
                    }

                    var userModel = WebApiCaller.PostAsync <UserModel>("WebApi:Authenticate:Register", new RegisterUserRequestModel
                    {
                        Username        = inputModel.Username,
                        Password        = inputModel.Password,
                        ConfirmPassword = inputModel.ConfirmPassword,
                        FirstName       = inputModel.FirstName,
                        LastName        = inputModel.LastName,
                        EmailAddress    = inputModel.EmailAddress,
                        Browser         = browserInfo,
                        Device          = deviceInfo
                    });

                    if (userModel != null)
                    {
                        CookieHelper.SignIn(userModel);
                        SecurityHelper.AddSessionUser(userModel);
                        return(RedirectToAction("Index", "Orders"));
                    }
                    else
                    {
                        return(RedirectToAction("Register", new { ErrorMessage = "Unable to perform registration. Please contact IT support." }));
                    }
                }
                else
                {
                    return(RedirectToAction("Register", new { ErrorMessage = "There are validation errors with the information supplied." }));
                }
            }
            catch (Exception ex)
            {
                return(RedirectToAction("Error", "Home", new { IsError = "True", ex.Message, BaseMessage = ex.GetBaseException().Message }));
            }
        }
        public async Task <IActionResult> RegisterAsync(RegistrationInputModel input)
        {
            if (!ModelState.IsValid)
            {
                return(View(input));
            }

            var user = _mapper.Map <User>(input);

            user.UserName = input.Email;
            user.Nickname = input.FirstName;
            var result = await _userManager.CreateAsync(user, input.Password);

            if (result.Succeeded)
            {
                _logger.LogInformation("New account for {user} created", input.Email);

                result = await _userManager.AddClaimsAsync(user, user.Claims());

                if (!result.Succeeded)
                {
                    _logger.LogError("Failed to add user claims", result.Errors);
                }

                var code = await _userManager.GenerateEmailConfirmationTokenAsync(user);

                code = WebEncoders.Base64UrlEncode(Encoding.UTF8.GetBytes(code));
                var link = Url.Action("ConfirmEmail", "Registration", new
                {
                    userId = user.Id,
                    code
                });
                var msg = _emailSender.CreateEmailVerificationMessage(user, link);
                _ = _emailSender.SendAsync(msg);

                return(View("RegisterStatus", user.Email));
            }
            else
            {
                foreach (var error in result.Errors)
                {
                    ModelState.AddModelError(string.Empty, error.Description);
                }
                return(View(input));
            }
        }
예제 #12
0
        public async Task <IActionResult> Login(string returnUrl)
        {
            // build a model so we know what to show on the login page
            var vm = await _account.BuildLoginViewModelAsync(returnUrl);

            if (vm.IsExternalLoginOnly)
            {
                // we only have one option for logging in and it's an external provider
                var registrationInputModel = new RegistrationInputModel
                {
                    Provider  = vm.ExternalLoginScheme,
                    ReturnUrl = returnUrl,
                };
                return(await ExternalLogin(registrationInputModel));
            }

            return(View(vm));
        }
예제 #13
0
        public IActionResult Register(RegistrationInputModel registrationInputModel)
        {
            if (!this.ModelState.IsValid)
            {
                return(this.Redirect("/Users/Register"));
            }

            if (registrationInputModel.Password != registrationInputModel.ConfirmPassword)
            {
                return(this.Redirect("/Users/Register"));
            }

            this.userServices.
            CreateUser(registrationInputModel.Username, registrationInputModel.Email,
                       registrationInputModel.Password, registrationInputModel.FullName);


            return(Redirect("/"));
        }
예제 #14
0
        public async Task <bool> RegisterUser(RegistrationInputModel registrationInputModel)
        {
            bool    success = false;
            UserDTO user    = new UserDTO()
            {
                UserName = registrationInputModel.UserName,
                Email    = registrationInputModel.Email,
            };

            var userDTO = await authRepository.RegisterUser(user, registrationInputModel.Password);

            if (userDTO != null)
            {
                List <ClaimDTO> claims = new List <ClaimDTO>();

                claims.Add(new ClaimDTO()
                {
                    ClaimType = "Permission", ClaimValue = "ALL"
                });
                var isClaimSuccess = await authRepository.AddClaimToUser(userDTO.Id, claims);

                var isRpleSuccess = await authRepository.AdRoleToUser(userDTO.Id, "Admin");

                if (isClaimSuccess && isRpleSuccess)
                {
                    OrganizationDTO organizationDTO = new OrganizationDTO();
                    organizationDTO.Address = registrationInputModel.OrganizationInputModel.Address;
                    organizationDTO.Code    = registrationInputModel.OrganizationInputModel.Code;
                    organizationDTO.Country = registrationInputModel.OrganizationInputModel.Country;
                    organizationDTO.State   = registrationInputModel.OrganizationInputModel.State;
                    organizationDTO.Type    = registrationInputModel.OrganizationInputModel.Type;
                    organizationDTO.PhoneNo = registrationInputModel.OrganizationInputModel.PhoneNo;
                    organizationDTO.Name    = registrationInputModel.OrganizationInputModel.Name;
                    organizationDTO         = await SaveOrgDetails(organizationDTO);

                    var result = await UpdateUser(userDTO);

                    success = true;
                }
            }
            authRepository.Dispose();
            return(success);
        }
예제 #15
0
        public void Register_Save_Successful()
        {
            // Given
            var resources  = new Resources();
            var inputModel = new RegistrationInputModel
            {
                Username        = "******",
                Password        = "******",
                ConfirmPassword = "******",
                FirstName       = "Test",
                LastName        = "User",
                EmailAddress    = "*****@*****.**",
            };

            resources.MockApiCaller.AddMockResponse("WebApi:Authenticate:Register", new RegisterUserRequestModel
            {
                Username        = inputModel.Username,
                Password        = inputModel.Password,
                ConfirmPassword = inputModel.ConfirmPassword,
                FirstName       = inputModel.FirstName,
                LastName        = inputModel.LastName,
                EmailAddress    = inputModel.EmailAddress,
                Browser         = "Unable to determine",
                Device          = "Unable to determine",
            }, new UserModel {
                Username = "******", ApiSessionToken = Guid.NewGuid().ToString(), IsAuthenticated = true
            });

            // When
            var result = resources.Controller.Register(inputModel) as RedirectToActionResult;

            // Then
            Assert.IsNotNull(result);
            Assert.AreEqual("Index", result.ActionName);
            Assert.AreEqual("Orders", result.ControllerName);
        }
예제 #16
0
        private static async Task RespondRegistrationIndexAsync(
            this INugetServerProvider provider,
            HttpContext context,
            RegistrationInputModel registrationInput,
            IEnumerable <Nuspec> nuspecs,
            bool useGzip = false)
        {
            var nuspecList = nuspecs
                             .Select(x => new { Nuspec = x, Version = (NuGetVersionString)x.Metadata.Version })
                             .OrderBy(x => x.Version)
                             .Select(x => x.Nuspec)
                             .ToList();

            var lowest             = nuspecList.First().Metadata;
            var uppest             = nuspecList.Last().Metadata;
            var parent             = registrationInput.BaseUrl + registrationInput.Path;
            var lowestVersion      = SemanticVersion.Parse(lowest.Version).ToFullString();
            var uppestVersion      = SemanticVersion.Parse(uppest.Version).ToFullString();
            var packageContentBase = registrationInput.BaseUrl +
                                     provider.GetResourceUrlPath(NugetServerResourceType.PackageBaseAddress);
            var model = new RegistrationIndexOutputModel
            {
                Count = nuspecList.Count
            };

            foreach (var nuspec in nuspecList)
            {
                var publishTime = new DateTimeOffset(new FileInfo(nuspec.FilePath).LastWriteTimeUtc);
                var metadata    = nuspec.Metadata;
                var modelItem   = new RegistrationPageOutputModel()
                {
                    Id    = $"{registrationInput.BaseUrl}{registrationInput.Path}#page/{metadata.Version}/{metadata.Version}",
                    Count = nuspecList.Count,
                    Lower = lowestVersion,
                    Upper = uppestVersion,
                };
                // If present Items, MUST also present Parent,Id need NOT be used.
                modelItem.Parent = parent;
                modelItem.Items  = new List <RegistrationLeafOutputModel>()
                {
                    new RegistrationLeafOutputModel
                    {
                        Id = registrationInput.BaseUrl +
                             registrationInput.PathBase +
                             $"/{metadata.Version}.json",
                        PackageContent = packageContentBase +
                                         $"/{metadata.Id.ToLowerInvariant()}" +
                                         $"/{metadata.Version.ToLowerInvariant()}" +
                                         $"/{metadata.Id.ToLowerInvariant()}" +
                                         $".{metadata.Version.ToLowerInvariant()}.nupkg",
                        Registration = registrationInput.BaseUrl +
                                       registrationInput.Path,
                        CatalogEntry = new RegistrationCatalogEntryOutputModel
                        {
                            Id_alias = registrationInput.BaseUrl +
                                       registrationInput.PathBase +
                                       $"/{metadata.Version}.json",
                            Id          = metadata.Id,
                            Authors     = metadata.Authors,
                            Description = metadata.Description,
                            ProjectUrl  = metadata.ProjectUrl,
                            IconUrl     = metadata.IconUrl,
                            Summary     = metadata.ReleaseNotes ?? metadata.Description,
                            Tags        = metadata.Tags?.Split(
                                new[] { ',' },
                                StringSplitOptions.RemoveEmptyEntries)
                                          ?.ToList() ?? new List <string>(0),
                            Title      = metadata.Id,
                            Version    = metadata.Version,
                            LicenseUrl = metadata.LicenseUrl,
                            Listed     = !provider.PackageStatusProvider.IsDeleted(metadata.Id, metadata.Version),
                            RequireLicenseAcceptance = metadata.RequireLicenseAcceptance,
                            PackageContent           = packageContentBase +
                                                       $"/{metadata.Id.ToLowerInvariant()}" +
                                                       $"/{metadata.Version.ToLowerInvariant()}" +
                                                       $"/{metadata.Id.ToLowerInvariant()}" +
                                                       $".{metadata.Version.ToLowerInvariant()}.nupkg",
                            Published        = publishTime,
                            DependencyGroups = metadata.Dependencies
                                               .Select(deps =>
                                                       new RegistrationDependencyGroupOutputModel
                            {
                                //Id_alias = ""
                                TargetFramework = deps.TargetFramework,
                                Dependencies    = deps.Dependency.Select(dep =>
                                                                         new RegistrationDependencyOutputModel
                                {
                                    Id = dep.Id,
                                    //Id_Alias = "",
                                    Range        = dep.Version,
                                    Registration = registrationInput.BaseUrl +
                                                   registrationInput.Path
                                }).ToList()
                            }).ToList()
                        }
                    }
                };
                model.Items.Add(modelItem);
            }
            await provider.WriteJsonResponseAsync(context, model, useGzip : useGzip);
        }
예제 #17
0
        public ActionResult Register(RegistrationInputModel model)
        {
            if (!ModelState.IsValid)
            {
                return View(model);
            }

            if (WebSecurity.UserExists(model.Name))
            {
                ModelState.AddModelError("Name", "Пользователь с таким логином уже существует!");
            }

            if (RepositoryManager.UserRepository.IsEmailExist(model.Email))
            {
                ModelState.AddModelError("Email", "Пользователь с таким email уже существует!");
            }

            //To show new errors
            if (!ModelState.IsValid)
            {
                return View(model);
            }

            WebSecurity.CreateUserAndAccount(model.Name, model.Password, new
            {
                Email = model.Email,
                AddTime = DateTime.Now
            });
            WebSecurity.Login(model.Name, model.Password, true);

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