/// <summary> /// Sign the user into plex and make sure we can get the authentication token. /// <remarks>We do not check if the user is in the owners "friends" since they must have a local user account to get this far</remarks> /// </summary> /// <param name="user"></param> /// <param name="password"></param> /// <returns></returns> private async Task <bool> CheckPlexPasswordAsync(OmbiUser user, string password) { var result = await _plexApi.SignIn(new UserRequest { password = password, login = user.UserName }); if (result.user?.authentication_token != null) { return(true); } return(false); }
/// <summary> /// Sign the user into plex and make sure we can get the authentication token. /// <remarks>We do not check if the user is in the owners "friends" since they must have a local user account to get this far</remarks> /// </summary> /// <param name="user"></param> /// <param name="password"></param> /// <returns></returns> private async Task <bool> CheckPlexPasswordAsync(OmbiUser user, string password) { var login = user.EmailLogin ? user.Email : user.UserName; var result = await _plexApi.SignIn(new UserRequest { password = password, login = login }); if (result.user?.authentication_token != null) { // Update ombi user with the token user.MediaServerToken = result.user?.authentication_token; await UpdateAsync(user); return(true); } return(false); }
private async Task UpdatePlexData() { if (AuthToken == null) { AuthToken = (await _plexApi.SignIn()).user.authentication_token; } Libraries = (await _plexApi.GetLibrarySections(AuthToken)).MediaContainer.Directory; LibraryMetadata = new Dictionary <string, Metadata[]>(); for (int i = 0; i < Libraries.Count; i++) { LibraryMetadata.Add(Libraries[i].key, (await _plexApi.GetLibrary(AuthToken, Libraries[i].key)).MediaContainer.Metadata); } }
public async Task <ValidationContext <UserLoginCommandResult> > Handle(UserLoginCommand request, CancellationToken cancellationToken) { _logger.LogDebug("Attempting Plex SignIn"); var result = new ValidationContext <UserLoginCommandResult>(); PlexRequests.Plex.Models.User plexUser; try { plexUser = await _plexApi.SignIn(request.Username, request.Password); } catch (PlexRequestException) { result.AddError("Invalid Plex Credentials", "Unable to login to Plex with the given credentials"); _logger.LogInformation("Unable to login to Plex with the given credentials"); return(result); } _logger.LogDebug("Plex SignIn Successful"); _logger.LogDebug("Getting PlexRequests User from PlexAccountId"); var plexRequestsUser = await _userService.GetUserFromPlexId(plexUser.Id); if (plexRequestsUser == null || plexRequestsUser.IsDisabled) { result.AddError("Unrecognised user", "The user is not recognised or has been disabled."); _logger.LogInformation($"Successful login from a Plex account that was either not found within our users list or has been disabled [IsDisabled={plexRequestsUser?.IsDisabled}]"); return(result); } _logger.LogDebug("Found matching PlexRequests User"); var refreshToken = _tokenService.CreateRefreshToken(); var accessToken = _tokenService.CreateToken(plexRequestsUser); plexRequestsUser.LastLoginUtc = DateTime.UtcNow; plexRequestsUser.UserRefreshTokens.Add(refreshToken); await _unitOfWork.CommitAsync(); result.Data = new UserLoginCommandResult { AccessToken = accessToken, RefreshToken = refreshToken.Token }; return(result); }
public async Task <ValidationContext <UserLoginCommandResult> > Handle(AddAdminCommand request, CancellationToken cancellationToken) { var result = new ValidationContext <UserLoginCommandResult>(); _logger.LogDebug("Attempting to create first Admin account"); if (await result.AddErrorIf(HasAdminAlreadyBeenCreated, "Unable to add Plex Admin", "An Admin account has already been created")) { return(result); } _logger.LogDebug("No existing Admin account, attempting Plex SignIn"); var plexUser = await _plexApi.SignIn(request.Username, request.Password); if (result.AddErrorIf(() => plexUser == null, "Invalid PlexCredentials", "The Login credentials for Plex were invalid")) { _logger.LogDebug("Invalid PlexCredentials"); return(result); } if (!result.IsSuccessful) { return(result); } _logger.LogDebug("Plex SignIn Successful"); var refreshToken = _tokenService.CreateRefreshToken(); var adminUser = await AddAdminUser(plexUser, refreshToken); await CreateAdminServer(plexUser); adminUser.LastLoginUtc = DateTime.UtcNow; await _unitOfWork.CommitAsync(); result.Data = new UserLoginCommandResult { AccessToken = _tokenService.CreateToken(adminUser), RefreshToken = refreshToken.Token }; return(result); }
private void GivenInvalidPlexCredentialsThrowsException() { _plexApi.SignIn(Arg.Any <string>(), Arg.Any <string>()).Throws(new PlexRequestException("", "", HttpStatusCode.FailedDependency)); }
private void GivenInvalidPlexCredentials() { _plexApi.SignIn(Arg.Any <string>(), Arg.Any <string>()).ReturnsNull(); }