Exemple #1
0
 public async Task <dynamic> RegisterExternal(RegisterExternalViewModel viewModel)
 {
     return(await ExecuteInMonitoring(async() =>
     {
         return await service.RegisterExternalAsync(userManager, viewModel);
     }));
 }
        public async Task <IHttpActionResult> RegisterExternal(RegisterExternalViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var info = await Authentication.GetExternalLoginInfoAsync();

            if (info == null)
            {
                return(InternalServerError());
            }

            var user = new ApplicationUser()
            {
                UserName = model.Email, Email = model.Email
            };

            IdentityResult result = await _userManager.CreateAsync(user);

            if (!result.Succeeded)
            {
                return(GetErrorResult(result));
            }

            result = await _userManager.AddLoginAsync(user.Id, info.Login);

            if (!result.Succeeded)
            {
                return(GetErrorResult(result));
            }
            return(Ok());
        }
 public ActionResult RegisterExternal(RegisterExternalViewModel model)
 {
     if (!ModelState.IsValid)
     {
         return(View(model));
     }
     else
     {
         return(FinishResigration(new RegisterViewModel(model)));
     }
 }
Exemple #4
0
        public async Task <RegisterResponse> RegisterExternal(RegisterExternalViewModel viewModel)
        {
            var apiModel = new RegisterExternalApiModel()
            {
                provider            = viewModel.Provider,
                ExternalAccessToken = viewModel.ExternalAccessToken,
                userName            = viewModel.UserName
            };
            var response = await ApiClient.PostJsonEncodedContent(RegisterExternalUri, apiModel);

            var registerResponse = await CreateJsonResponse <RegisterResponse>(response);

            return(registerResponse);
        }
Exemple #5
0
        public async Task <IHttpActionResult> RegisterExternal(RegisterExternalBindingModel model)
        {
            var result = new RegisterExternalViewModel();

            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var verifiedAccessToken = await VerifyExternalAccessToken(model.Provider, model.ExternalAccessToken);

            if (verifiedAccessToken == null)
            {
                return(BadRequest("Invalid Provider or External Access Token"));
            }

            var user = await _authAccess.FindAsync(new UserLoginInfo(model.Provider, verifiedAccessToken.user_id));

            bool hasRegistered = user != null;

            if (hasRegistered)
            {
                return(BadRequest("External user is already registered"));
            }

            user = new ApplicationUser()
            {
                UserName = string.Format("{0}_{1}", model.Provider, model.Email), Email = model.Email
            };

            var userResult = await _authAccess.CreateAsync(user);

            if (!userResult.Succeeded)
            {
                return(GetErrorResult(userResult));
            }

            var roleResult = await _authAccess.AddToRoleAsync(user, "TimerUser");

            if (!roleResult.Succeeded)
            {
                return(GetErrorResult(roleResult));
            }

            var info = new ExternalLoginInfo()
            {
                Email           = model.Email,
                DefaultUserName = user.UserName,
                Login           = new UserLoginInfo(model.Provider, verifiedAccessToken.user_id)
            };

            var loginResult = await _authAccess.AddLoginAsync(user.Id, info.Login);

            if (!loginResult.Succeeded)
            {
                return(GetErrorResult(loginResult));
            }

            var signResult = await SignInManager.ExternalSignInAsync(info, false);

            if (signResult != SignInStatus.Success)
            {
                return(BadRequest("Sign in failed"));
            }

            result.Result = true;

            return(Ok(result));
        }
Exemple #6
0
        public async Task <TokenAuthorizeModel> RegisterExternalAsync(MyUserManager userManager, RegisterExternalViewModel viewModel)
        {
            var identity           = viewModel.ToEntity();
            var authenticationType = Enum.Parse <ExternalAuthenticationType>(viewModel.Provider, true);

            _externalAuthenticationFactory.Create(authenticationType).GetUserDetails(identity, viewModel.ProviderIdToken);

            identity.UserName = identity.Email;

            //If user exist in the system
            var user = await userManager.FindByNameAsync(identity.UserName);

            if (user != null)
            {
                return(await user.AuthorizeAsync(userManager, _extensionSettings.appSettings));
            }

            //if user is not exist in the system
            IdentityResult result = await userManager.CreateAsync(identity);

            if (result.Succeeded)
            {
                await updateOtherInfoForIdentity(userManager, identity);

                return(await identity.AuthorizeAsync(userManager, _extensionSettings.appSettings));
            }

            throw new FoodCourtException(ErrorMessage.USER_CREATE_FAIL);
        }