From 0523d927f31acc3be070fa6281c3108aaefe65c2 Mon Sep 17 00:00:00 2001 From: Roy Ben Shabat Date: Tue, 25 Feb 2020 16:25:40 +0200 Subject: Azure Utils: Added Tango WebApp user creation and permission on database for token authentication. Also added to Azure notes. --- .../Tango.AzureUtils.UI/Views/EnvironmentCreationView.xaml | 1 + .../Azure/Tango.AzureUtils/Database/DatabaseManager.cs | 12 ++++++++++++ .../Environment/CreateEnvironmentConfiguration.cs | 1 + .../Tango.AzureUtils/Environment/EnvironmentManager.cs | 14 ++++++++++++++ .../Notes/Tango.Notes/Azure/New Environment.txt | 8 ++++++++ 5 files changed, 36 insertions(+) (limited to 'Software/Visual_Studio') diff --git a/Software/Visual_Studio/Azure/Tango.AzureUtils.UI/Views/EnvironmentCreationView.xaml b/Software/Visual_Studio/Azure/Tango.AzureUtils.UI/Views/EnvironmentCreationView.xaml index 05f917e5b..54fe2f7be 100644 --- a/Software/Visual_Studio/Azure/Tango.AzureUtils.UI/Views/EnvironmentCreationView.xaml +++ b/Software/Visual_Studio/Azure/Tango.AzureUtils.UI/Views/EnvironmentCreationView.xaml @@ -40,6 +40,7 @@ Create Database Add Database Permissions for Environment Group Create Database Backup User + Create Database Tango WebApp User Synchronize Database Schema Synchronize Database Static Collections Create MS and PPC Storage Containers diff --git a/Software/Visual_Studio/Azure/Tango.AzureUtils/Database/DatabaseManager.cs b/Software/Visual_Studio/Azure/Tango.AzureUtils/Database/DatabaseManager.cs index cb1a608a8..75a7f321b 100644 --- a/Software/Visual_Studio/Azure/Tango.AzureUtils/Database/DatabaseManager.cs +++ b/Software/Visual_Studio/Azure/Tango.AzureUtils/Database/DatabaseManager.cs @@ -198,6 +198,18 @@ namespace Tango.AzureUtils.Database } } + public async Task AddTangoWebAppUser(String address, String databaseName, String userName, String password) + { + OnProgress(AzureUtilsStage.Database, $"Adding Tango WebApp permissions on '{databaseName}'..."); + + using (DbManager db = DbManager.FromCredentials(address, databaseName, userName, password)) + { + await db.ExecuteCommandAsync("CREATE USER [Tango] FOR LOGIN [BackupUser] WITH DEFAULT_SCHEMA=[dbo]"); + await db.ExecuteCommandAsync("EXEC sp_addrolemember N'db_datareader', N'Tango'"); + await db.ExecuteCommandAsync("EXEC sp_addrolemember N'db_datawriter', N'Tango'"); + } + } + #endregion #region Versions diff --git a/Software/Visual_Studio/Azure/Tango.AzureUtils/Environment/CreateEnvironmentConfiguration.cs b/Software/Visual_Studio/Azure/Tango.AzureUtils/Environment/CreateEnvironmentConfiguration.cs index e8162e4c0..e538f3094 100644 --- a/Software/Visual_Studio/Azure/Tango.AzureUtils/Environment/CreateEnvironmentConfiguration.cs +++ b/Software/Visual_Studio/Azure/Tango.AzureUtils/Environment/CreateEnvironmentConfiguration.cs @@ -18,6 +18,7 @@ namespace Tango.AzureUtils.Environment public bool CreateDatabase { get; set; } = true; public bool AddDatabasePermissionsForEnvironmentGroup { get; set; } = true; public bool CreateDatabaseBackupUser { get; set; } = true; + public bool CreateDatabaseTangoWebApplicationUser { get; set; } = true; public bool SynchronizeDatabaseSchema { get; set; } = true; public bool SynchronizeDatabaseData { get; set; } = true; public bool CreateStorageContainers { get; set; } = true; diff --git a/Software/Visual_Studio/Azure/Tango.AzureUtils/Environment/EnvironmentManager.cs b/Software/Visual_Studio/Azure/Tango.AzureUtils/Environment/EnvironmentManager.cs index 53665a73d..19ccb8f92 100644 --- a/Software/Visual_Studio/Azure/Tango.AzureUtils/Environment/EnvironmentManager.cs +++ b/Software/Visual_Studio/Azure/Tango.AzureUtils/Environment/EnvironmentManager.cs @@ -138,6 +138,20 @@ namespace Tango.AzureUtils.Environment } } + //Create Tango web application user + if (config.CreateDatabaseTangoWebApplicationUser) + { + try + { + await _databaseManager.AddTangoWebAppUser(sourceSettings.DB_ADDRESS, targetSettings.DB_CATALOG, sourceSettings.DB_USER_NAME, sourceSettings.DB_PASSWORD); + } + catch (Exception ex) + { + + await RequestConfirmation($"Error creating/adding permissions for Tango web application on database.\n{ex.FlattenMessage()}\n\nDo you wish to continue?"); + } + } + //Synchronize Schema if (config.SynchronizeDatabaseSchema) { diff --git a/Software/Visual_Studio/Notes/Tango.Notes/Azure/New Environment.txt b/Software/Visual_Studio/Notes/Tango.Notes/Azure/New Environment.txt index dd0e4174e..710cdcb2d 100644 --- a/Software/Visual_Studio/Notes/Tango.Notes/Azure/New Environment.txt +++ b/Software/Visual_Studio/Notes/Tango.Notes/Azure/New Environment.txt @@ -36,6 +36,14 @@ EXEC sp_addrolemember N'db_backupoperator', N'BackupUser' EXEC sp_addrolemember N'db_datareader', N'BackupUser' EXEC sp_addrolemember N'db_datawriter', N'BackupUser' +8.2 Create the Tango web application user (for token based authentication) + +CREATE USER [Tango] FROM EXTERNAL PROVIDER WITH DEFAULT_SCHEMA=[dbo] +GO + +EXEC sp_addrolemember N'db_datareader', N'BackupUser' +EXEC sp_addrolemember N'db_datawriter', N'BackupUser' + 9. Create a new storage blob container for the machine studio versions. 10. Create a new storage blob container for the PPC versions. -- cgit v1.3.1