2011-02-07 3 views
1

ルートポータルディレクトリにDotNetNukeのフォルダをプログラムで作成しました。 私は、認証されたユーザーに対してのみ読み取り専用にしたいなど、一度だけアクセス許可を割り当てたいだけです。どのようにC#またはVB.NEtを使用してこれを達成するための任意のアドバイス?DotNetNukeでプログラムでフォルダを作成し、そのフォルダにアクセス権を割り当てる方法は?

ありがとうございます。

答えて

4

それはかなり複雑で入り組んだ:

var folderController = new FolderController(); 
var folderId = 
    folderController.AddFolder(
     new FolderInfo(
      portalId, 
      folderName, 
      (int)FolderController.StorageLocationTypes.InsecureFileSystem, 
      isProtected: false, 
      isCached: false, 
      lastUpdated: Null.NullDate)); 
var folder = folderController.GetFolderInfo(portalId, folderId); 
Directory.CreateDirectory(folder.PhysicalPath); 

var permissionController = new PermissionController(); 
var writePermission = permissionController.GetPermissionByCodeAndKey("SYSTEM_FOLDER", "WRITE").Cast<PermissionInfo>().Single(); 
var registeredUserRole = new RoleController().GetRoleByName(folder.PortalID, "Registered Users"); 
folder.FolderPermissions.Add(new FolderPermissionInfo 
    { 
     FolderID = folder.FolderID, 
     PermissionID = writePermission.PermissionID, 
     RoleID = registeredUserRole.RoleID, 
     UserID = Null.NullInteger, 
     PermissionKey = writePermission.PermissionKey, 
     AllowAccess = false 
    }); 
+0

実際に少し畳み込まれていますが、答えが分かりやすくなりました。どうもありがとうございました。 – Fayde

+0

bdukes - すべてのユーザーを読み取りファイルのようなアクセス許可に設定する方法はありますか? – braindice

+0

@codemypantsoff 'RoleID'を' int.Parse(DotNetNuke.Common.Globals.glbRoleAllUsers、CultureInfo.InvariantCulture) 'に設定して、すべてのユーザーのアクセス許可。読み取り許可のキーは '' READ "'です。 – bdukes

0

次のコードは、データベースに私の権限を追加しませんでした。 FolderInfo

  • 6は、許可IDを= =

    FolderManager.Instance.SetFolderPermission(folder, 6, registeredUserRole.RoleID); 
    
    • フォルダを、この場合には書き込み(これも 権限を追加します:ビュー/ブラウズ)

      folder.FolderPermissions.Add(new FolderPermissionInfo 
      { 
          FolderID = folder.FolderID, 
          PermissionID = writePermission.PermissionID, 
          RoleID = registeredUserRole.RoleID, 
          UserID = Null.NullInteger, 
          PermissionKey = writePermission.PermissionKey, 
          AllowAccess = false 
      }); 
      

      は、私が使用していました。

    • registeredUserRole.RoleID =フォルダに与えたいロール へのアクセス許可。