public async Task <SaveWizardResult> CreateWizardUser([FromBody] CreateUserWizardModel user) { var users = UserManager.Users; // There could be a SINGLE plex user as you can create that in the wizard flow, but there should not be anything else var plexUsersCount = await users.CountAsync(x => x.UserType == UserType.PlexUser); if (plexUsersCount > 1 || users.Any(x => x.UserType == UserType.LocalUser)) { // No one should be calling this. Only the wizard return(new SaveWizardResult { Result = false, Errors = new List <string> { "Looks like there is an existing user!" } }); } if (user.UsePlexAdminAccount) { var settings = await _plexSettings.GetSettingsAsync(); var authToken = settings.Servers.FirstOrDefault()?.PlexAuthToken ?? string.Empty; if (authToken.IsNullOrEmpty()) { _log.LogWarning("Could not find an auth token to create the plex user with"); return(new SaveWizardResult { Result = false }); } var plexUser = await _plexApi.GetAccount(authToken); var adminUser = new OmbiUser { UserName = plexUser.user.username, UserType = UserType.PlexUser, Email = plexUser.user.email, ProviderUserId = plexUser.user.id, StreamingCountry = "US" // Default }; await _userManagementSettings.SaveSettingsAsync(new UserManagementSettings { ImportPlexAdmin = true }); return(await SaveWizardUser(user, adminUser, false)); } var userToCreate = new OmbiUser { UserName = user.Username, UserType = UserType.LocalUser, StreamingCountry = "US" }; return(await SaveWizardUser(user, userToCreate, true)); }
public async Task <SaveWizardResult> CreateWizardUser([FromBody] CreateUserWizardModel user) { var users = UserManager.Users; if (users.Any(x => !x.UserName.Equals("api", StringComparison.InvariantCultureIgnoreCase))) { // No one should be calling this. Only the wizard return(new SaveWizardResult { Result = false, Errors = new List <string> { "Looks like there is an existing user!" } }); } if (user.UsePlexAdminAccount) { var settings = await _plexSettings.GetSettingsAsync(); var authToken = settings.Servers.FirstOrDefault()?.PlexAuthToken ?? string.Empty; if (authToken.IsNullOrEmpty()) { _log.LogWarning("Could not find an auth token to create the plex user with"); return(new SaveWizardResult { Result = false }); } var plexUser = await _plexApi.GetAccount(authToken); var adminUser = new OmbiUser { UserName = plexUser.user.username, UserType = UserType.PlexUser, Email = plexUser.user.email, ProviderUserId = plexUser.user.id }; await _userManagementSettings.SaveSettingsAsync(new UserManagementSettings { ImportPlexAdmin = true }); return(await SaveWizardUser(user, adminUser)); } var userToCreate = new OmbiUser { UserName = user.Username, UserType = UserType.LocalUser }; return(await SaveWizardUser(user, userToCreate)); }
public async Task <OmbiUser> GetOmbiUserFromPlexToken(string plexToken) { var plexAccount = await _plexApi.GetAccount(plexToken); // Check for a ombi user if (plexAccount?.user != null) { var potentialOmbiUser = await Users.FirstOrDefaultAsync(x => x.ProviderUserId == plexAccount.user.id); return(potentialOmbiUser); } return(null); }
private async Task ImportAdmin(UserManagementSettings settings, PlexServers server, List <OmbiUser> allUsers) { if (!settings.ImportPlexAdmin) { return; } var plexAdmin = (await _api.GetAccount(server.PlexAuthToken)).user; // Check if the admin is already in the DB var adminUserFromDb = allUsers.FirstOrDefault(x => x.ProviderUserId.Equals(plexAdmin.id, StringComparison.CurrentCultureIgnoreCase)); if (adminUserFromDb != null) { // Let's update the user adminUserFromDb.Email = plexAdmin.email; adminUserFromDb.UserName = plexAdmin.username; adminUserFromDb.ProviderUserId = plexAdmin.id; await _userManager.UpdateAsync(adminUserFromDb); return; } var newUser = new OmbiUser { UserType = UserType.PlexUser, UserName = plexAdmin.username ?? plexAdmin.id, ProviderUserId = plexAdmin.id, Email = plexAdmin.email ?? string.Empty, Alias = string.Empty, StreamingCountry = settings.DefaultStreamingCountry }; var result = await _userManager.CreateAsync(newUser); if (!LogResult(result)) { return; } var roleResult = await _userManager.AddToRoleAsync(newUser, OmbiRoles.Admin); LogResult(roleResult); }
public async Task <bool> CreateWizardUser([FromBody] CreateUserWizardModel user) { var users = UserManager.Users; if (users.Any()) { // No one should be calling this. Only the wizard return(false); } if (user.UsePlexAdminAccount) { var settings = await _plexSettings.GetSettingsAsync(); var authToken = settings.Servers.FirstOrDefault()?.PlexAuthToken ?? string.Empty; if (authToken.IsNullOrEmpty()) { _log.LogWarning("Could not find an auth token to create the plex user with"); return(false); } var plexUser = await _plexApi.GetAccount(authToken); var adminUser = new OmbiUser { UserName = plexUser.user.username, UserType = UserType.PlexUser, Email = plexUser.user.email, ProviderUserId = plexUser.user.id }; return(await SaveWizardUser(user, adminUser)); } var userToCreate = new OmbiUser { UserName = user.Username, UserType = UserType.LocalUser }; return(await SaveWizardUser(user, userToCreate)); }
public async Task <OmbiUser> GetOmbiUserFromPlexToken(string plexToken) { var plexAccount = await _plexApi.GetAccount(plexToken); // Check for a ombi user if (plexAccount?.user == null) { return(null); } var potentialOmbiUser = await Users.FirstOrDefaultAsync(x => x.ProviderUserId == plexAccount.user.id); // Update ombi user with the token if (potentialOmbiUser != null) { potentialOmbiUser.MediaServerToken = plexAccount.user.authentication_token; await UpdateAsync(potentialOmbiUser); } return(potentialOmbiUser); }
public async Task <PlexAccount> GetAccount(string accessToken) { return(await _api.GetAccount(accessToken)); }