2015-01-06 1 views
0

Я использую calendar.Permissions, чтобы узнать, какие права у входа вошел в контакт с другим.Разрешения против EffectiveRights

var myEmail = GetPrimaryMailForIdentity(User.Identity); 
... 
service.Credentials = new WebCredentials(serviceAccountName, serviceAccountPass); 
service.AutodiscoverUrl(toEmail); 
... 
var calendar = CalendarFolder.Bind(service,WellKnownFolderName.Calendar) 
foreach (var permission in calendar.Permissions) { 
    if(permission.UserId.PrimarySmtpAddress == myEmail) { 
     if(permission.ReadItems == FolderPermissionReadAccess.TimeOnly) permission = "TimeOnly"; 
     ... 
    } 
} 

Это только дает мне некоторые из различных прав один человек может иметь на другой почтовый ящик, так как там также может быть правилом FullAccess, или почтовый ящик может быть то, что ресурса он владеет/управляет. Так что я мог бы также от имени пользователя, для которого, чтобы получить разрешение, а также проверить действующие права:

var myEmail = GetPrimaryMailForIdentity(User.Identity); 
... 
service.Credentials = new WebCredentials(serviceAccountName, serviceAccountPass); 
service.AutodiscoverUrl(toEmail); 
service.ImpersonatedUserId = new ImpersonatedUserId(ConnectingIdType.SmtpAddress, myEmail); 
... 
var calendar = CalendarFolder.Bind(service,WellKnownFolderName.Calendar) 
var permissions = calendar.EffectiveRights; 
if(permissions.HasFlag(EffectiveRights.Read) { 
    permission = "TimeOnly"; // TODO 
} 

Но как я могу узнать, что ему позволено читать - все детали, или только время?

ответ

Смежные вопросы