コード例 #1
0
ファイル: IdentityController.cs プロジェクト: Ombi-app/Ombi
        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));
        }
コード例 #2
0
        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));
        }
コード例 #3
0
ファイル: OmbiUserManager.cs プロジェクト: itzfk0/ombi
        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);
        }
コード例 #4
0
        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);
        }
コード例 #5
0
ファイル: IdentityController.cs プロジェクト: uncleiven/Ombi
        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));
        }
コード例 #6
0
        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);
        }
コード例 #7
0
 public async Task <PlexAccount> GetAccount(string accessToken)
 {
     return(await _api.GetAccount(accessToken));
 }