@inherits Dynamicweb.Rendering.ViewModelTemplate @using System.Web; @using Dynamicweb.Security; @using Dynamicweb.Security.Permissions; @using Newtonsoft.Json; @using Dynamicweb.Security.UserManagement @functions { public class ErrorMessage { public string message {get; set;} } public string RenderResponse (PermissionLevel permission, bool hasPermissions) { ErrorMessage error = new ErrorMessage(); error.message = "Invalid token"; string json = JsonConvert.SerializeObject(error, Formatting.Indented); if(permission != PermissionLevel.None || !hasPermissions) { return Model.ToJson(); } else { return json; } } } @{ var encryptedToken = HttpContext.Current.Request.Params["Token"]; var feedId = HttpContext.Current.Request.Params["Id"]; string token = encryptedToken != null ? encryptedToken.ToString() : ""; string feed = feedId != null ? feedId.ToString() : ""; var permissionService = new UnifiedPermissionService(); string key = feed; string name = "Feed"; string subName = ""; var unifiedPermission = new UnifiedPermissionIdentifier(key, name, subName); UnifiedPermissionQuery query = new UnifiedPermissionQuery(); query.Key = key; query.Name = name; var allPermissions = permissionService.GetAllPermissionsByQuery(query); PermissionLevel defaultPermission = permissionService.GetPermission("Anonymous",unifiedPermission); if(token != "" && feed != "") { var decryptBase64Token = System.Convert.FromBase64String(token); token = System.Text.Encoding.UTF8.GetString(decryptBase64Token); token = Dynamicweb.Security.SystemTools.Crypto.Decrypt(token); var tokenUserid_int = token != "" ? Convert.ToInt32(token) : 9999999; var tokenUser = User.GetUserByID(tokenUserid_int); if(tokenUser != null) { var userGroups = tokenUser.GroupsIds; foreach(var groupId in userGroups) { PermissionLevel groupPermission = permissionService.GetPermission(groupId.ToString(),unifiedPermission); defaultPermission = groupPermission != PermissionLevel.None ? groupPermission : defaultPermission; } @RenderResponse(defaultPermission,allPermissions.Any()) } else { @RenderResponse(defaultPermission,allPermissions.Any()) } } else { @RenderResponse(defaultPermission,allPermissions.Any()) } }