public async Task<BaseResponse> RegisterExternalUserIfNeeded(RegisterExternalUserCommand command) {
			var response = new BaseResponse();
			var request = new UserRequest();

			request.Username = command.Email;

			var user = await _userQueryService.GetByUsername(command.Email);

			if (user != null) {
				response.Ack = AckType.FAILURE;
				response.Message = string.Format("There is already a user with the email {0}.", command.Email);

				return response;
			}

			await _commandDispatcher.Dispatch(command);

			return response;
		}
Beispiel #2
0
		public async Task<HttpResponseMessage> RegisterExternal(RegisterExternalUserCommand command) {
			await _userApplicationService.RegisterExternalUserIfNeeded(command);
			return OkResponse(command.Identifier);
		}
Beispiel #3
0
		public async Task<ActionResult> FacebookSignInCallback(string code, string returnUrl) {
			var facebookClient = new FacebookClient();
			var redirectUri = BuildFacebookSignInCallbackUrl();

			dynamic result = facebookClient.Post("oauth/access_token", new {
				client_id = _configurationService.FacebookAppId,
				client_secret = _configurationService.FacebookAppSecret,
				redirect_uri = redirectUri,
				code = code
			});

			var access_token = result.access_token;
			facebookClient.AccessToken = access_token;

			dynamic me = facebookClient.Get("me");

			string email = me.email;
			string name = me.name;
			string id = me.id;

			var userId = Guid.NewGuid();
			var command = new RegisterExternalUserCommand(userId, name, email, FACEBOOK_PROVIDER, id);

			var response = await _userProxy.RegisterExternalUserIfNeeded(command);

			if (response.Ack == AckType.SUCCESS) {
				var appIdentity = new AppIdentity(userId.ToString(), command.Name, command.Email);
				_authenticationService.SignIn(appIdentity, true);

				return RedirectToLocal(returnUrl);
			} else {
				ModelState.AddModelError("", response.Message);
				PreserveTempData();

				return RedirectToAction("SignIn", new { returnUrl = returnUrl });
			}
		}
Beispiel #4
0
		public async Task<BaseResponse> RegisterExternalUserIfNeeded(RegisterExternalUserCommand command) {
			return await SendCommand(command, "user/registerexternal/");
		}