Ejemplo n.º 1
0
        public async Task <IHttpActionResult> RegisterExternal(RegisterExternalModel model)
        {
            var verifiedAccessToken = new ParsedExternalAccessToken();

            if (ModelState.IsValid)
            {
                var helper = OauthHelper.Create();
                if (!string.IsNullOrEmpty(model.Provider) && !string.IsNullOrEmpty(model.ExternalAccessToken))
                {
                    verifiedAccessToken = await helper.VerifyExternalAccessToken(model.Provider, model.ExternalAccessToken);

                    if (verifiedAccessToken == null)
                    {
                        return(this.JsonError(HttpStatusCode.BadRequest, 10, "Invalid Provider or External Access Token", ModelState));
                    }
                }

                var loginInfo = await SignInManager.AuthenticationManager.GetExternalLoginInfoAsync();

                ExternalLoginData externalLogin = ExternalLoginData.FromIdentity(loginInfo.ExternalIdentity as ClaimsIdentity);

                var registerGeneral = new RegisterGeneralModel()
                {
                    UserName = model.UserName,
                    Email    = model.Email,
                    //FirstName = externalLogin.UserName.Split(' ')[0], //First Name
                    //LastName = externalLogin.UserName.Split(' ').LastOrDefault(), //Last Name
                    ExternalAccessToken = model.ExternalAccessToken,
                    Provider            = model.Provider
                };

                var regResult = await RegisterInternal(registerGeneral);

                if (regResult.HasError)
                {
                    return(JsonError(regResult.HttpStatusCode, regResult.ServerErrorCode, regResult.ErrorMessage, regResult.ModelState));
                }
                else
                {
                    var result = new
                    {
                        userId = regResult.UserId
                    };
                    return(Json(result));
                }
            }
            else
            {
                return(JsonError(HttpStatusCode.BadRequest, 10, "Warning", ModelState));
            }
        }