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(); }
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(); }