2026-10-20 16:13:34 +09:00
|
|
|
<UserControl xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
2026-10-20 20:48:08 +09:00
|
|
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
|
|
|
Background="{StaticResource BgDarkBrush}">
|
2026-10-20 16:13:34 +09:00
|
|
|
<Grid Margin="24">
|
|
|
|
|
<Grid.RowDefinitions>
|
|
|
|
|
<RowDefinition Height="Auto" />
|
|
|
|
|
<RowDefinition Height="Auto" />
|
|
|
|
|
<RowDefinition Height="*" />
|
|
|
|
|
<RowDefinition Height="Auto" />
|
|
|
|
|
</Grid.RowDefinitions>
|
|
|
|
|
|
|
|
|
|
<!-- Header -->
|
|
|
|
|
<StackPanel Grid.Row="0" Margin="0,0,0,20">
|
|
|
|
|
<TextBlock Text="Active Directory 관리" FontSize="24" FontWeight="Bold" Foreground="{StaticResource TextPrimaryBrush}" />
|
|
|
|
|
<TextBlock Text="도메인 사용자 계정, 보안 그룹, OU 및 계정 상태를 조회하고 제어합니다."
|
|
|
|
|
FontSize="13" Foreground="{StaticResource TextSecondaryBrush}" Margin="0,4,0,0" />
|
|
|
|
|
</StackPanel>
|
|
|
|
|
|
|
|
|
|
<!-- Control / Filter 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>
|
|
|
|
|
|
|
|
|
|
<!-- Search Input -->
|
|
|
|
|
<TextBlock Grid.Column="0" Text="사용자 검색:" Foreground="{StaticResource TextSecondaryBrush}" VerticalAlignment="Center" Margin="0,0,10,0" />
|
|
|
|
|
<TextBox Grid.Column="1" x:Name="TxtAdSearch" Style="{StaticResource ModernTextBoxStyle}" Margin="0,0,16,0" />
|
|
|
|
|
|
|
|
|
|
<!-- Filter Combo / Radio -->
|
|
|
|
|
<StackPanel Grid.Column="2" Orientation="Horizontal" VerticalAlignment="Center">
|
|
|
|
|
<Button x:Name="BtnAdSearch" Content=" 검색" Style="{StaticResource PrimaryButtonStyle}" Margin="0,0,8,0" />
|
|
|
|
|
<Button x:Name="BtnAdRefresh" Content="새로고침" Style="{StaticResource SecondaryButtonStyle}" Margin="0,0,16,0" />
|
|
|
|
|
</StackPanel>
|
|
|
|
|
|
|
|
|
|
<!-- Action Toolbar -->
|
|
|
|
|
<StackPanel Grid.Column="3" Orientation="Horizontal" HorizontalAlignment="Right">
|
|
|
|
|
<Button x:Name="BtnAdNewUser" Content="+ 계정 추가" Style="{StaticResource PrimaryButtonStyle}" Margin="0,0,8,0" />
|
|
|
|
|
<Button x:Name="BtnAdResetPwd" Content="암호 초기화" Style="{StaticResource SecondaryButtonStyle}" Margin="0,0,8,0" />
|
|
|
|
|
<Button x:Name="BtnAdUnlock" Content="잠금 해제" Style="{StaticResource SecondaryButtonStyle}" Margin="0,0,8,0" />
|
|
|
|
|
<Button x:Name="BtnAdToggleEnable" Content="활성화/비활성화" Style="{StaticResource SecondaryButtonStyle}" />
|
|
|
|
|
</StackPanel>
|
|
|
|
|
</Grid>
|
|
|
|
|
</Border>
|
|
|
|
|
|
|
|
|
|
<!-- Main Content Grid -->
|
|
|
|
|
<Grid Grid.Row="2">
|
|
|
|
|
<Grid.ColumnDefinitions>
|
|
|
|
|
<ColumnDefinition Width="7*" />
|
|
|
|
|
<ColumnDefinition Width="3*" />
|
|
|
|
|
</Grid.ColumnDefinitions>
|
|
|
|
|
|
|
|
|
|
<!-- AD Users DataGrid -->
|
|
|
|
|
<Border Grid.Column="0" Style="{StaticResource ModernCardStyle}" Margin="0,0,12,0" Padding="0">
|
|
|
|
|
<DataGrid x:Name="AdUsersGrid" Style="{StaticResource ModernDataGridStyle}">
|
|
|
|
|
<DataGrid.Columns>
|
|
|
|
|
<DataGridTextColumn Header="아이디 (SamAccount)" Binding="{Binding SamAccountName}" Width="130" />
|
|
|
|
|
<DataGridTextColumn Header="이름 (Display Name)" Binding="{Binding DisplayName}" Width="120" />
|
|
|
|
|
<DataGridTextColumn Header="부서" Binding="{Binding Department}" Width="100" />
|
|
|
|
|
<DataGridTextColumn Header="직급 / 직책" Binding="{Binding Title}" Width="90" />
|
|
|
|
|
<DataGridTextColumn Header="이메일" Binding="{Binding UserPrincipalName}" Width="180" />
|
|
|
|
|
<DataGridTextColumn Header="상태" Binding="{Binding StatusText}" Width="75" />
|
|
|
|
|
<DataGridTextColumn Header="잠김 여부" Binding="{Binding LockedText}" Width="80" />
|
|
|
|
|
<DataGridTextColumn Header="최종 로그인" Binding="{Binding LastLogonDate}" Width="*" />
|
|
|
|
|
</DataGrid.Columns>
|
|
|
|
|
</DataGrid>
|
|
|
|
|
</Border>
|
|
|
|
|
|
|
|
|
|
<!-- Selected User Properties Inspector Card -->
|
|
|
|
|
<Border Grid.Column="1" Style="{StaticResource ModernCardStyle}">
|
|
|
|
|
<ScrollViewer VerticalScrollBarVisibility="Auto">
|
|
|
|
|
<StackPanel>
|
|
|
|
|
<TextBlock Text="선택된 계정 상세 정보" FontSize="15" FontWeight="Bold" Foreground="{StaticResource TextPrimaryBrush}" Margin="0,0,0,16" />
|
|
|
|
|
|
|
|
|
|
<!-- User Profile Header -->
|
|
|
|
|
<Border Background="#121A27" CornerRadius="8" Padding="14" Margin="0,0,0,16">
|
|
|
|
|
<StackPanel>
|
|
|
|
|
<TextBlock x:Name="TxtDetailName" Text="홍길동 (gdhong)" FontSize="16" FontWeight="Bold" Foreground="{StaticResource TextPrimaryBrush}" />
|
|
|
|
|
<TextBlock x:Name="TxtDetailEmail" Text="gdhong@corp.local" FontSize="12" Foreground="{StaticResource TextSecondaryBrush}" Margin="0,2,0,0" />
|
|
|
|
|
<TextBlock x:Name="TxtDetailOu" Text="OU=Users,OU=Seoul,DC=corp,DC=local" FontSize="11" Foreground="#60A5FA" Margin="0,6,0,0" TextWrapping="Wrap" />
|
|
|
|
|
</StackPanel>
|
|
|
|
|
</Border>
|
|
|
|
|
|
|
|
|
|
<TextBlock Text="계정 속성" FontSize="13" FontWeight="SemiBold" Foreground="{StaticResource TextSecondaryBrush}" Margin="0,0,0,8" />
|
|
|
|
|
|
|
|
|
|
<Grid Margin="0,4">
|
|
|
|
|
<TextBlock Text="계정 상태:" Foreground="{StaticResource TextSecondaryBrush}" FontSize="12" />
|
|
|
|
|
<TextBlock x:Name="TxtPropStatus" Text="활성 (Active)" Foreground="#10B981" FontWeight="SemiBold" FontSize="12" HorizontalAlignment="Right" />
|
|
|
|
|
</Grid>
|
|
|
|
|
<Grid Margin="0,4">
|
|
|
|
|
<TextBlock Text="계정 만료일:" Foreground="{StaticResource TextSecondaryBrush}" FontSize="12" />
|
|
|
|
|
<TextBlock x:Name="TxtPropExpires" Text="제한 없음" Foreground="{StaticResource TextPrimaryBrush}" FontSize="12" HorizontalAlignment="Right" />
|
|
|
|
|
</Grid>
|
|
|
|
|
<Grid Margin="0,4">
|
|
|
|
|
<TextBlock Text="암호 최종 변경:" Foreground="{StaticResource TextSecondaryBrush}" FontSize="12" />
|
|
|
|
|
<TextBlock x:Name="TxtPropPwdChanged" Text="2026-09-15" Foreground="{StaticResource TextPrimaryBrush}" FontSize="12" HorizontalAlignment="Right" />
|
|
|
|
|
</Grid>
|
|
|
|
|
<Grid Margin="0,4">
|
|
|
|
|
<TextBlock Text="암호 만료 필요 여부:" Foreground="{StaticResource TextSecondaryBrush}" FontSize="12" />
|
|
|
|
|
<TextBlock x:Name="TxtPropMustChange" Text="아니오" Foreground="{StaticResource TextPrimaryBrush}" FontSize="12" HorizontalAlignment="Right" />
|
|
|
|
|
</Grid>
|
|
|
|
|
|
|
|
|
|
<Separator Background="{StaticResource CardBorderBrush}" Margin="0,12" />
|
|
|
|
|
|
|
|
|
|
<TextBlock Text="소속 그룹 (Member Of)" FontSize="13" FontWeight="SemiBold" Foreground="{StaticResource TextSecondaryBrush}" Margin="0,0,0,8" />
|
|
|
|
|
<ListBox x:Name="ListMemberGroups" Height="120" Background="#0F172A" BorderBrush="{StaticResource CardBorderBrush}"
|
|
|
|
|
Foreground="{StaticResource TextPrimaryBrush}" FontSize="12" />
|
|
|
|
|
|
|
|
|
|
<Button x:Name="BtnManageGroups" Content="그룹 멤버십 편집..." Style="{StaticResource SecondaryButtonStyle}" Margin="0,8,0,0" HorizontalAlignment="Right" />
|
|
|
|
|
</StackPanel>
|
|
|
|
|
</ScrollViewer>
|
|
|
|
|
</Border>
|
|
|
|
|
</Grid>
|
|
|
|
|
|
|
|
|
|
<!-- Status Footer -->
|
|
|
|
|
<Border Grid.Row="3" Margin="0,12,0,0">
|
|
|
|
|
<DockPanel>
|
|
|
|
|
<TextBlock x:Name="TxtAdStatusMsg" Text="준비 완료 - 도메인 컨트롤러: dc01.corp.local (연결됨)" FontSize="12" Foreground="{StaticResource TextSecondaryBrush}" />
|
|
|
|
|
<TextBlock x:Name="TxtAdTotalCount" Text="총 1,420 명의 사용자" FontSize="12" Foreground="{StaticResource TextSecondaryBrush}" HorizontalAlignment="Right" />
|
|
|
|
|
</DockPanel>
|
|
|
|
|
</Border>
|
|
|
|
|
</Grid>
|
|
|
|
|
</UserControl>
|