예제 #1
0
        public CheckFileInfo GetCheckFileInfo(WebDavAccessToken token)
        {
            var resource = _webDavManager.GetResource(token.FilePath);

            var permissions = _webDavAuthorizationService.GetPermissions(ScpContext.User, token.FilePath);

            var readOnly = permissions.HasFlag(WebDavPermissions.Write) == false || permissions.HasFlag(WebDavPermissions.OwaEdit) == false;

            var cFileInfo = new CheckFileInfo
            {
                BaseFileName = resource == null?token.FilePath.Split('/').Last() : resource.DisplayName.Split(new[] { '/' }, StringSplitOptions.RemoveEmptyEntries).LastOrDefault(),
                                   OwnerId                 = ScpContext.User.Login,
                                   Size                    = resource == null ? 0 : resource.ContentLength,
                                   Version                 = DateTime.Now.ToString("s"),
                                   SupportsCoauth          = true,
                                   SupportsCobalt          = true,
                                   SupportsFolders         = true,
                                   SupportsLocks           = true,
                                   SupportsScenarioLinks   = false,
                                   SupportsSecureStore     = false,
                                   SupportsUpdate          = true,
                                   UserCanWrite            = !readOnly,
                                   ReadOnly                = readOnly,
                                   RestrictedWebViewOnly   = false,
                                   CloseButtonClosesWindow = true
            };

            if (resource != null)
            {
                cFileInfo.ClientUrl = _webDavManager.GetFileUrl(token.FilePath);
            }

            return(cFileInfo);
        }
예제 #2
0
        private static string GenerateWopiUrl(WebDavAccessToken token, string urlPart, string path)
        {
            var url = new Uri(HttpContext.Current.Request.Url, urlPart).ToString();

            string wopiSrc = HttpUtility.UrlDecode(url);

            return(string.Format("{0}&access_token={1}", wopiSrc, token.AccessToken.ToString("N")));
        }
예제 #3
0
        public WebDavAccessToken CreateToken(WspPrincipal principal, string filePath)
        {
            var token = new WebDavAccessToken();

            token.AccessToken    = Guid.NewGuid();
            token.AccountId      = principal.AccountId;
            token.ItemId         = principal.ItemId;
            token.AuthData       = principal.EncryptedPassword;
            token.ExpirationDate = DateTime.Now.AddHours(3);
            token.FilePath       = filePath;

            token.Id = WSP.Services.EnterpriseStorage.AddWebDavAccessToken(token);

            return(token);
        }
예제 #4
0
        public static String GenerateWopiUrl(this UrlHelper urlHelper, WebDavAccessToken token, string path)
        {
            var urlPart = urlHelper.Route(OwaRouteNames.CheckFileInfo, new { accessTokenId = token.Id });

            return(GenerateWopiUrl(token, urlPart, path));
        }
예제 #5
0
 public int AddWebDavAccessToken(WebDavAccessToken accessToken)
 {
     return(EnterpriseStorageController.AddWebDavAccessToken(accessToken));
 }