| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using Abp.Authorization;
- using Abp.Dependency;
- using Abp.Runtime.Session;
- namespace Abp.Web.Authorization
- {
- /// <summary>
- ///
- /// </summary>
- public class AuthorizationScriptManager : IAuthorizationScriptManager, ITransientDependency
- {
- /// <inheritdoc/>
- public IAbpSession AbpSession { get; set; }
- private readonly IPermissionManager _permissionManager;
- public IPermissionChecker PermissionChecker { get; set; }
- /// <inheritdoc/>
- public AuthorizationScriptManager(IPermissionManager permissionManager)
- {
- AbpSession = NullAbpSession.Instance;
- PermissionChecker = NullPermissionChecker.Instance;
- _permissionManager = permissionManager;
- }
- /// <inheritdoc/>
- public async Task<string> GetScriptAsync()
- {
- var allPermissionNames = _permissionManager.GetAllPermissions(false).Select(p => p.Name).ToList();
- var grantedPermissionNames = new List<string>();
- if (AbpSession.UserId.HasValue)
- {
- foreach (var permissionName in allPermissionNames)
- {
- if (await PermissionChecker.IsGrantedAsync(permissionName))
- {
- grantedPermissionNames.Add(permissionName);
- }
- }
- }
-
- var script = new StringBuilder();
- script.AppendLine("(function(){");
- script.AppendLine();
- script.AppendLine(" abp.auth = abp.auth || {};");
- script.AppendLine();
- AppendPermissionList(script, "allPermissions", allPermissionNames);
- script.AppendLine();
- AppendPermissionList(script, "grantedPermissions", grantedPermissionNames);
- script.AppendLine();
- script.Append("})();");
- return script.ToString();
- }
- private static void AppendPermissionList(StringBuilder script, string name, IReadOnlyList<string> permissions)
- {
- script.AppendLine(" abp.auth." + name + " = {");
- for (var i = 0; i < permissions.Count; i++)
- {
- var permission = permissions[i];
- if (i < permissions.Count - 1)
- {
- script.AppendLine(" '" + permission + "': true,");
- }
- else
- {
- script.AppendLine(" '" + permission + "': true");
- }
- }
- script.AppendLine(" };");
- }
- }
- }
|