173 lines
11 KiB
XML
173 lines
11 KiB
XML
<UserControl xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
Background="{StaticResource BgDarkBrush}">
|
|
<Grid Margin="24">
|
|
<Grid.RowDefinitions>
|
|
<!-- 0. Header -->
|
|
<RowDefinition Height="Auto" />
|
|
<!-- 1. Top Share & DB Selector Bar -->
|
|
<RowDefinition Height="Auto" />
|
|
<!-- 2. Main Dual Grid & Action Center -->
|
|
<RowDefinition Height="*" />
|
|
<!-- 3. Bottom Execution Log & Status -->
|
|
<RowDefinition Height="180" />
|
|
</Grid.RowDefinitions>
|
|
|
|
<!-- 0. Header -->
|
|
<StackPanel Grid.Row="0" Margin="0,0,0,18">
|
|
<TextBlock Text="공유 권한 및 AD 보안그룹 연동 관리" FontSize="24" FontWeight="Bold" Foreground="{StaticResource TextPrimaryBrush}" />
|
|
<TextBlock Text="DB에서 Share 대상자를 조회하여 선택적으로 권한을 부여/해제하고, Share 이름과 동일한 AD 보안그룹 멤버십을 1:1 동기화합니다."
|
|
FontSize="13" Foreground="{StaticResource TextSecondaryBrush}" Margin="0,4,0,0" />
|
|
</StackPanel>
|
|
|
|
<!-- 1. Top Selector Bar -->
|
|
<Border Grid.Row="1" Style="{StaticResource ModernCardStyle}" Margin="0,0,0,16" Padding="14">
|
|
<Grid>
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="Auto" />
|
|
<ColumnDefinition Width="260" />
|
|
<ColumnDefinition Width="Auto" />
|
|
<ColumnDefinition Width="*" />
|
|
</Grid.ColumnDefinitions>
|
|
|
|
<TextBlock Grid.Column="0" Text="관리 대상 Share (공유):" Foreground="{StaticResource TextSecondaryBrush}" VerticalAlignment="Center" Margin="0,0,10,0" />
|
|
<ComboBox Grid.Column="1" x:Name="CmbShareList" SelectedIndex="0" Height="32" Background="#0F172A" Foreground="{StaticResource TextPrimaryBrush}" Margin="0,0,16,0" />
|
|
|
|
<StackPanel Grid.Column="2" Orientation="Horizontal">
|
|
<Button x:Name="BtnReloadFromDb" Content=" DB 데이터 조회" Style="{StaticResource PrimaryButtonStyle}" Margin="0,0,8,0" />
|
|
<Button x:Name="BtnReloadADGroup" Content="AD 그룹 멤버 새로고침" Style="{StaticResource SecondaryButtonStyle}" />
|
|
</StackPanel>
|
|
|
|
<!-- Mapping Rule Indicator -->
|
|
<StackPanel Grid.Column="3" Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="Center">
|
|
<Border Background="#1E293B" CornerRadius="6" Padding="10,6" BorderBrush="{StaticResource CardBorderBrush}" BorderThickness="1">
|
|
<StackPanel Orientation="Horizontal">
|
|
<TextBlock Text="" FontFamily="{StaticResource IconFont}" Foreground="#60A5FA" Margin="0,0,6,0" VerticalAlignment="Center" />
|
|
<TextBlock Text="연계 보안그룹: " Foreground="{StaticResource TextSecondaryBrush}" FontSize="12" />
|
|
<TextBlock x:Name="TxtTargetADGroupName" Text="Finance_Share" FontWeight="Bold" Foreground="#60A5FA" FontSize="12" />
|
|
</StackPanel>
|
|
</Border>
|
|
</StackPanel>
|
|
</Grid>
|
|
</Border>
|
|
|
|
<!-- 2. Main Dual Grid & Action Center -->
|
|
<Grid Grid.Row="2" Margin="0,0,0,16">
|
|
<Grid.ColumnDefinitions>
|
|
<!-- Left: DB Users Grid -->
|
|
<ColumnDefinition Width="5*" />
|
|
<!-- Center: Action Buttons -->
|
|
<ColumnDefinition Width="130" />
|
|
<!-- Right: AD Group Members Grid -->
|
|
<ColumnDefinition Width="5*" />
|
|
</Grid.ColumnDefinitions>
|
|
|
|
<!-- LEFT: DB Users Grid -->
|
|
<Border Grid.Column="0" Style="{StaticResource ModernCardStyle}" Margin="0" Padding="14">
|
|
<Grid>
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="Auto" />
|
|
<RowDefinition Height="*" />
|
|
<RowDefinition Height="Auto" />
|
|
</Grid.RowDefinitions>
|
|
|
|
<!-- Title & Batch Selector -->
|
|
<DockPanel Grid.Row="0" Margin="0,0,0,10">
|
|
<TextBlock Text="DB 조회 사용자 목록 (권한 할당 대상)" FontSize="14" FontWeight="Bold" Foreground="{StaticResource TextPrimaryBrush}" VerticalAlignment="Center" />
|
|
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right">
|
|
<Button x:Name="BtnSelectAll" Content="전체선택" Style="{StaticResource SecondaryButtonStyle}" Padding="8,3" FontSize="11" Margin="0,0,6,0" />
|
|
<Button x:Name="BtnDeselectAll" Content="선택해제" Style="{StaticResource SecondaryButtonStyle}" Padding="8,3" FontSize="11" />
|
|
</StackPanel>
|
|
</DockPanel>
|
|
|
|
<!-- DB Users DataGrid with CheckBox -->
|
|
<DataGrid x:Name="DbUsersGrid" Grid.Row="1" Style="{StaticResource ModernDataGridStyle}">
|
|
<DataGrid.Columns>
|
|
<!-- Selection Checkbox Column -->
|
|
<DataGridCheckBoxColumn Header="선택" Binding="{Binding IsSelected, UpdateSourceTrigger=PropertyChanged}" Width="50" />
|
|
<DataGridTextColumn Header="아이디 (sAMAccountName)" Binding="{Binding SamAccountName}" Width="150" />
|
|
<DataGridTextColumn Header="성명" Binding="{Binding UserName}" Width="100" />
|
|
<DataGridTextColumn Header="부서" Binding="{Binding Department}" Width="120" />
|
|
<DataGridTextColumn Header="권한 상태" Binding="{Binding Status}" Width="110" />
|
|
<DataGridTextColumn Header="할당 일자" Binding="{Binding AssignedDate}" Width="*" />
|
|
</DataGrid.Columns>
|
|
</DataGrid>
|
|
|
|
<TextBlock Grid.Row="2" x:Name="TxtDbCount" Text="총 5명 조회됨" FontSize="11" Foreground="{StaticResource TextSecondaryBrush}" Margin="4,8,0,0" />
|
|
</Grid>
|
|
</Border>
|
|
|
|
<!-- CENTER: Transfer & Action Buttons -->
|
|
<StackPanel Grid.Column="1" VerticalAlignment="Center" HorizontalAlignment="Center" Margin="10,0">
|
|
<!-- Add Button -->
|
|
<Button x:Name="BtnAddToShareGroup" Style="{StaticResource PrimaryButtonStyle}" Margin="0,0,0,12" Padding="8,12" ToolTip="선택한 사용자를 DB 등록 및 AD 보안그룹에 추가">
|
|
<StackPanel HorizontalAlignment="Center">
|
|
<TextBlock Text="" FontFamily="{StaticResource IconFont}" FontSize="18" HorizontalAlignment="Center" />
|
|
<TextBlock Text="그룹 추가" FontSize="11" FontWeight="Bold" Margin="0,4,0,0" HorizontalAlignment="Center" />
|
|
</StackPanel>
|
|
</Button>
|
|
|
|
<!-- Remove / Revoke Button -->
|
|
<Button x:Name="BtnRemoveFromShareGroup" Style="{StaticResource SecondaryButtonStyle}" Padding="8,12" ToolTip="선택한 사용자를 DB 해제 및 AD 보안그룹에서 제거">
|
|
<StackPanel HorizontalAlignment="Center">
|
|
<TextBlock Text="" FontFamily="{StaticResource IconFont}" FontSize="18" HorizontalAlignment="Center" />
|
|
<TextBlock Text="그룹 해제" FontSize="11" FontWeight="Bold" Margin="0,4,0,0" HorizontalAlignment="Center" />
|
|
</StackPanel>
|
|
</Button>
|
|
</StackPanel>
|
|
|
|
<!-- RIGHT: AD Security Group Members Grid -->
|
|
<Border Grid.Column="2" Style="{StaticResource ModernCardStyle}" Margin="0" Padding="14">
|
|
<Grid>
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="Auto" />
|
|
<RowDefinition Height="*" />
|
|
<RowDefinition Height="Auto" />
|
|
</Grid.RowDefinitions>
|
|
|
|
<DockPanel Grid.Row="0" Margin="0,0,0,10">
|
|
<TextBlock Text="현재 AD 보안그룹 소속 멤버" FontSize="14" FontWeight="Bold" Foreground="{StaticResource TextPrimaryBrush}" VerticalAlignment="Center" />
|
|
<Border Background="#10B981" CornerRadius="4" Padding="6,2" HorizontalAlignment="Right">
|
|
<TextBlock Text="실시간 AD 동기화" FontSize="11" FontWeight="Bold" Foreground="White" />
|
|
</Border>
|
|
</DockPanel>
|
|
|
|
<DataGrid x:Name="ADGroupMembersGrid" Grid.Row="1" Style="{StaticResource ModernDataGridStyle}">
|
|
<DataGrid.Columns>
|
|
<DataGridTextColumn Header="sAMAccountName" Binding="{Binding SamAccountName}" Width="150" />
|
|
<DataGridTextColumn Header="성명" Binding="{Binding DisplayName}" Width="100" />
|
|
<DataGridTextColumn Header="부서" Binding="{Binding Department}" Width="130" />
|
|
<DataGridTextColumn Header="DistinguishedName (DN)" Binding="{Binding DistinguishedName}" Width="*" />
|
|
</DataGrid.Columns>
|
|
</DataGrid>
|
|
|
|
<TextBlock Grid.Row="2" x:Name="TxtAdGroupCount" Text="현재 그룹 멤버: 3명" FontSize="11" Foreground="{StaticResource TextSecondaryBrush}" Margin="4,8,0,0" />
|
|
</Grid>
|
|
</Border>
|
|
</Grid>
|
|
|
|
<!-- 3. Bottom Execution Log & Trace Console -->
|
|
<Border Grid.Row="3" Style="{StaticResource ModernCardStyle}" Margin="0" Padding="12">
|
|
<Grid>
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="Auto" />
|
|
<RowDefinition Height="*" />
|
|
</Grid.RowDefinitions>
|
|
|
|
<DockPanel Grid.Row="0" Margin="0,0,0,6">
|
|
<TextBlock Text="동기화 실행 로그 및 SQL/LDAP 처리 이력" FontSize="13" FontWeight="Bold" Foreground="{StaticResource TextPrimaryBrush}" />
|
|
<Button x:Name="BtnClearLog" Content="로그 비우기" Style="{StaticResource SecondaryButtonStyle}" Padding="8,2" FontSize="11" HorizontalAlignment="Right" />
|
|
</DockPanel>
|
|
|
|
<Border Grid.Row="1" Background="#090D16" CornerRadius="4" Padding="10">
|
|
<ScrollViewer VerticalScrollBarVisibility="Auto">
|
|
<TextBox x:Name="TxtSyncLogs" Background="Transparent" Foreground="#A78BFA" BorderThickness="0"
|
|
IsReadOnly="True" FontFamily="Consolas" FontSize="12" TextWrapping="Wrap"
|
|
Text="[시스템 준비 완료] 대상을 선택하고 [그룹 추가] 또는 [그룹 해제]를 실행하십시오." />
|
|
</ScrollViewer>
|
|
</Border>
|
|
</Grid>
|
|
</Border>
|
|
</Grid>
|
|
</UserControl>
|