PageRenderTime 48ms CodeModel.GetById 20ms RepoModel.GetById 1ms app.codeStats 0ms

/WP7.1/Templates/VB/WPCloud.Mem/WindowsPhoneCloud.Web/Controllers/TablesController.vb

#
Visual Basic | 118 lines | 84 code | 19 blank | 15 comment | 2 complexity | ee661149c207eb2960ed3412c6863087 MD5 | raw file
  1. ' ----------------------------------------------------------------------------------
  2. ' Microsoft Developer & Platform Evangelism
  3. '
  4. ' Copyright (c) Microsoft Corporation. All rights reserved.
  5. '
  6. ' THIS CODE AND INFORMATION ARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND,
  7. ' EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES
  8. ' OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE.
  9. ' ----------------------------------------------------------------------------------
  10. ' The example companies, organizations, products, domain names,
  11. ' e-mail addresses, logos, people, places, and events depicted
  12. ' herein are fictitious. No association with any real company,
  13. ' organization, product, domain name, email address, logo, person,
  14. ' places, or events is intended or should be inferred.
  15. ' ----------------------------------------------------------------------------------
  16. Imports Microsoft.WindowsAzure.StorageClient
  17. Imports Microsoft.Samples.WindowsPhoneCloud.Web.UserAccountWrappers
  18. Imports Microsoft.Samples.WindowsPhoneCloud.Web.Models
  19. Imports Microsoft.Samples.WindowsPhoneCloud.Web.Controllers
  20. Imports Microsoft.Samples.WindowsPhoneCloud.Web.Infrastructure
  21. Imports Microsoft.Samples.ServiceHosting
  22. Imports System.Globalization
  23. Imports System.Collections.Generic
  24. Namespace Controllers
  25. Public Class TablesController
  26. Inherits StorageItemController
  27. Private ReadOnly cloudTableClient As CloudTableClient
  28. #If ACS Then
  29. Private ReadOnly userRepository As IUserRepository
  30. Public Sub New()
  31. Me.New(Nothing, New UserTablesServiceContext(), New UserTablesServiceContext())
  32. End Sub
  33. <CLSCompliant(False)> _
  34. Public Sub New(ByVal cloudTableClient As CloudTableClient, ByVal userPrivilegesRepository As IUserPrivilegesRepository, ByVal userRepository As IUserRepository)
  35. MyBase.New(userPrivilegesRepository)
  36. If (GetStorageAccountFromConfigurationSetting() Is Nothing) AndAlso (cloudTableClient Is Nothing) Then
  37. Throw New ArgumentNullException("cloudTableClient", "Cloud Table Client cannot be null if no configuration is loaded.")
  38. End If
  39. Me.cloudTableClient = If(cloudTableClient, GetStorageAccountFromConfigurationSetting().CreateCloudTableClient())
  40. Me.userRepository = userRepository
  41. End Sub
  42. Public Function Index() As ActionResult
  43. Dim permissions = New List(Of StorageItemPermissionsModel)()
  44. Dim tables = Me.cloudTableClient.ListTables()
  45. For Each tableName In tables
  46. If (Not tableName.Equals(Microsoft.Samples.ServiceHosting.AspProviders.AspProvidersConfiguration.DefaultMembershipTableName, StringComparison.OrdinalIgnoreCase)) AndAlso (Not tableName.Equals(UserTablesServiceContext.UserTableName, StringComparison.OrdinalIgnoreCase)) AndAlso (Not tableName.Equals(UserTablesServiceContext.UserPrivilegeTableName, StringComparison.OrdinalIgnoreCase)) AndAlso (Not tableName.Equals(UserTablesServiceContext.PushUserTableName, StringComparison.OrdinalIgnoreCase)) Then
  47. Dim accessTablePrivilege = String.Format(CultureInfo.InvariantCulture, "{0}{1}", tableName, PrivilegeConstants.TablePrivilegeSuffix)
  48. Dim publicTablePrivilege = String.Format(CultureInfo.InvariantCulture, "{0}{1}", tableName, PrivilegeConstants.PublicTablePrivilegeSuffix)
  49. permissions.Add(New StorageItemPermissionsModel With {.StorageItemName = tableName, .IsPublic = Me.UserPrivilegesRepository.PublicPrivilegeExists(publicTablePrivilege), .AllowedUserIds = Me.UserPrivilegesRepository.GetUsersWithPrivilege(accessTablePrivilege).Select(Function(us) us.UserId)})
  50. End If
  51. Next tableName
  52. Me.ViewData("users") = Me.userRepository.GetAllUsers().Select(Function(user) New UserModel With {.UserName = user.Name, .UserId = user.UserId})
  53. Return Me.View(permissions)
  54. End Function
  55. #Else
  56. Private ReadOnly membershipService As IMembershipService
  57. Public Sub New()
  58. Me.New(Nothing, New UserTablesServiceContext(), New AccountMembershipService())
  59. End Sub
  60. <CLSCompliant(False)> _
  61. Public Sub New(ByVal cloudTableClient As CloudTableClient, ByVal userPrivilegesRepository As IUserPrivilegesRepository, ByVal membershipService As IMembershipService)
  62. MyBase.New(userPrivilegesRepository)
  63. If (GetStorageAccountFromConfigurationSetting() Is Nothing) AndAlso (cloudTableClient Is Nothing) Then
  64. Throw New ArgumentNullException("cloudTableClient", "Cloud Table Client cannot be null if no configuration is loaded.")
  65. End If
  66. Me.cloudTableClient = If(cloudTableClient, GetStorageAccountFromConfigurationSetting().CreateCloudTableClient())
  67. Me.membershipService = membershipService
  68. End Sub
  69. Public Function Index() As ActionResult
  70. Dim permissions = New List(Of StorageItemPermissionsModel)()
  71. Dim tables = Me.cloudTableClient.ListTables()
  72. For Each tableName In tables
  73. If (Not tableName.Equals(ServiceHosting.AspProviders.AspProvidersConfiguration.DefaultMembershipTableName, StringComparison.OrdinalIgnoreCase)) AndAlso (Not tableName.Equals(UserTablesServiceContext.UserPrivilegeTableName, StringComparison.OrdinalIgnoreCase)) AndAlso (Not tableName.Equals(UserTablesServiceContext.PushUserTableName, StringComparison.OrdinalIgnoreCase)) Then
  74. Dim accessTablePrivilege = String.Format(CultureInfo.InvariantCulture, "{0}{1}", tableName, PrivilegeConstants.TablePrivilegeSuffix)
  75. Dim publicTablePrivilege = String.Format(CultureInfo.InvariantCulture, "{0}{1}", tableName, PrivilegeConstants.PublicTablePrivilegeSuffix)
  76. permissions.Add(New StorageItemPermissionsModel With {.StorageItemName = tableName, .IsPublic = Me.UserPrivilegesRepository.PublicPrivilegeExists(publicTablePrivilege), .AllowedUserIds = Me.UserPrivilegesRepository.GetUsersWithPrivilege(accessTablePrivilege).Select(Function(us) us.UserId)})
  77. End If
  78. Next tableName
  79. Me.ViewData("users") = Me.membershipService.GetAllUsers().Cast(Of MembershipUser)().Select(Function(user) New UserModel With {.UserName = user.UserName, .UserId = user.ProviderUserKey.ToString()})
  80. Return Me.View(permissions)
  81. End Function
  82. #End If
  83. <HttpPost()> _
  84. Public Sub AddTablePermission(ByVal table As String, ByVal userId As String)
  85. Dim accessTablePrivilege = String.Format(CultureInfo.InvariantCulture, "{0}{1}", table, PrivilegeConstants.TablePrivilegeSuffix)
  86. Me.AddPrivilegeToUser(userId, accessTablePrivilege)
  87. End Sub
  88. <HttpPost()> _
  89. Public Sub RemoveTablePermission(ByVal table As String, ByVal userId As String)
  90. Dim accessTablePrivilege = String.Format(CultureInfo.InvariantCulture, "{0}{1}", table, PrivilegeConstants.TablePrivilegeSuffix)
  91. Me.RemovePrivilegeFromUser(userId, accessTablePrivilege)
  92. End Sub
  93. <HttpPost()> _
  94. Public Sub SetTablePublic(ByVal table As String, ByVal isPublic As Boolean)
  95. Dim publicTablePrivilege = String.Format(CultureInfo.InvariantCulture, "{0}{1}", table, PrivilegeConstants.PublicTablePrivilegeSuffix)
  96. Me.SetPublicPrivilege(publicTablePrivilege, isPublic)
  97. End Sub
  98. End Class
  99. End Namespace