コード例 #1
0
        public async Task<IHttpActionResult> RegisterExternal(RegisterExternalBindingModel model)
        {
            if (!ModelState.IsValid)
            {
                return BadRequest(ModelState);
            }

            ExternalLoginData externalLogin = ExternalLoginData.FromIdentity(User.Identity as ClaimsIdentity);

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

            UserProfile user = new UserProfile
            {
                UserName = model.UserName,
                Email = model.Email
            };
            user.Logins.Add(new IdentityUserLogin
            {
                LoginProvider = externalLogin.LoginProvider,
                ProviderKey = externalLogin.ProviderKey
            });

            IdentityResult identityResult = await UserManager.CreateAsync(user);

            IHttpActionResult createResult = GetErrorResult(identityResult);

            if (createResult != null)
            {
                return createResult;
            }

            UserProfile justCreatedUser = await UserManager.FindByNameAsync(model.UserName);

            IdentityResult roleResult = await UserManager.AddToRoleAsync(justCreatedUser.Id, "User");

            IHttpActionResult addRoleResult = GetErrorResult(roleResult);

            if (addRoleResult != null)
            {
                return addRoleResult;
            }

            return Ok();
        }
コード例 #2
0
        public async Task<IHttpActionResult> RegisterExternal(RegisterExternalBindingModel model)
        {
            if (!this.ModelState.IsValid)
            {
                return this.BadRequest(this.ModelState);
            }

            var externalLogin = ExternalLoginData.FromIdentity(this.User.Identity as ClaimsIdentity);

            if (externalLogin == null)
            {
                return this.InternalServerError();
            }

            var user = new UserProfile { UserName = model.UserName, Email = model.Email, EmailConfirmed = true };

            user.Logins.Add(
                new IdentityUserLogin
                    {
                        LoginProvider = externalLogin.LoginProvider,
                        ProviderKey = externalLogin.ProviderKey,
                        UserId = user.Id
                    });

            var identityResult = await this.UserManager.CreateAsync(user);

            var createResult = this.GetErrorResult(identityResult);

            if (createResult != null)
            {
                return createResult;
            }

            var justCreatedUser = await this.UserManager.FindByNameAsync(model.UserName);

            var roleResult = await this.UserManager.AddToRoleAsync(justCreatedUser.Id, "User");

            var addRoleResult = this.GetErrorResult(roleResult);

            if (addRoleResult != null)
            {
                return addRoleResult;
            }

            return this.Ok();
        }