Example #1
0
        /// <summary>
        /// GET: WopiFrame
        /// </summary>
        /// <param name="id">File name</param>
        /// <returns>A ViewResult object</returns>
        public ActionResult Index(string id)
        {
            string sourceDoc = id.ToLower();
            string uid       = ConfigurationManager.AppSettings["BrowserUserName"].ToLower();

            string access_token = AccessTokenUtil.WriteToken(AccessTokenUtil.GenerateToken(uid, sourceDoc));

            List <WopiAction> actions   = DiscoveryUtil.GetDiscoveryInfo();
            string            extention = sourceDoc.Split('.')[sourceDoc.Split('.').Length - 1];
            WopiAction        action    = actions.FirstOrDefault(i => i.ext == extention && i.name == "view");
            string            urlSrc    = action.urlsrc;

            urlSrc = string.Format("{0}WOPISrc={1}",
                                   urlSrc.Substring(0, urlSrc.IndexOf('<')),
                                   HttpUtility.UrlEncode(string.Format("http://{0}/wopi/files/{1}",
                                                                       ConfigurationManager.AppSettings["WOPIServerName"],
                                                                       HttpUtility.UrlEncode(sourceDoc))));

            urlSrc = urlSrc.ToLower().Replace(ConfigurationManager.AppSettings["OfficeServerName"].ToLower().Trim(), ConfigurationManager.AppSettings["OfficeServerIP"]);

            urlSrc = string.Format("{0}&access_token={1}", urlSrc, HttpUtility.UrlEncode(access_token));

            ViewData["URL"] = urlSrc;

            return(View());
        }
Example #2
0
        protected override async void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            StatusBarUtil.SetColorStatusBars(this);
            SetContentView(Resource.Layout.SplashScreen);
            var tokenTemp           = AccessTokenUtil.GetToken(this);
            ClipboardManager cm     = (ClipboardManager)GetSystemService(Context.ClipboardService);
            ClipData         cldata = ClipData.NewPlainText("label", "cnblogs.com");

            cm.PrimaryClip = cldata;
            if (string.IsNullOrEmpty(tokenTemp.access_token) || tokenTemp.IsExpire)
            {
                await AuthorizationRequest.Client_Credentials((token) =>
                {
                    token.RefreshTime = DateTime.Now;
                    AccessTokenUtil.SaveToken(token, this);
                }, error =>
                {
                    System.Diagnostics.Debug.Write(error);
                });
            }
            Handler handler = new Handler();

            handler.PostDelayed((() =>
            {
                StartActivity(new Intent(this, typeof(MainActivity)));
                this.Finish();
            }), 2000);
            // Create your application here
        }
Example #3
0
        /// <summary>
        /// Validate that the provided access token is valid to get access to requested resource.
        /// </summary>
        /// <param name="requestData">Request information, including requested file Id</param>
        /// <param name="writeAccessRequired">Whether write permission is requested or not.</param>
        /// <returns>true when access token is correct and user has access to document, false otherwise.</returns>
        private static bool ValidateAccess(WopiRequest requestData, bool writeAccessRequired)
        {
            //// TODO: Access token validation is not implemented in this sample.
            //// For more details on access tokens, see the documentation
            //// https://wopi.readthedocs.io/projects/wopirest/en/latest/concepts.html#term-access-token
            //return !String.IsNullOrWhiteSpace(requestData.AccessToken);

            if (AccessTokenUtil.ValidateToken(requestData.AccessToken, requestData.Id.ToLower()))
            {
                string userName       = AccessTokenUtil.GetUserFromToken(requestData.AccessToken);
                string userPermission = AccessTokenUtil.readUserXml(uid, requestData.Id);

                if (userPermission.Equals("none"))
                {
                    return(false);
                }
                else if (!writeAccessRequired ||
                         (userPermission.Equals("write") && writeAccessRequired))
                {
                    return(true);
                }
            }

            return(false);
        }
        /// <summary>
        /// 在Action执行之前调用
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        public void OnActionExecuting(ActionExecutingContext context)
        {
            ContractResult result         = new ContractResult();
            var            baseController = ((BaseOAuthController)context.Controller);

            if (baseController.UserTicket != null)
            {
                baseController.UserTicket = AccessTokenUtil.RefreshToken(baseController.Account.AppId, baseController.UserTicket);
                return;
            }

            string codeKey = context.HttpContext.Request.Query.Keys.FirstOrDefault(key => key.ToLower() == "code");

            if (!string.IsNullOrEmpty(codeKey))
            {
                string secretKey = baseController.Account.SecretKey;
                string code      = context.HttpContext.Request.Query[codeKey];
                baseController.UserTicket = AccessTokenUtil.GetOAuthToken(baseController.Account.AppId, code, baseController.Account.SecretKey);
            }
            else
            {
                string authorizeUrl = WeChatSettingsUtil.Settings.AuthorizeUrl;
                string urlKey       = context.HttpContext.Request.Query.Keys.FirstOrDefault(key => key.ToLower() == "url");
                if (string.IsNullOrEmpty(urlKey))
                {
                    result.SetError(ErrorCodeType.InvalidUrl);
                    context.Result = new JsonResult(result);
                    return;
                }

                string redirect_uri = context.HttpContext.Request.Query[urlKey];
                string location     = $"{authorizeUrl}?appid={baseController.Account.AppId}&redirect_uri={redirect_uri}&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect";
                context.Result = new RedirectResult(location);//302重定向跳转
            }
        }
Example #5
0
        // GET: WopiValidator
        public ActionResult Index(string id)
        {
            WopiValidator wvModel = new WopiValidator();

            wvModel.FileName = id;
            string sourceDoc = id.ToLower();
            string uid       = "TestUser".ToLower();

            wvModel.AccessToken = AccessTokenUtil.WriteToken(AccessTokenUtil.GenerateToken(uid, sourceDoc));
            wvModel.HostURL     = string.Format("http://{0}/wopi/files/{1}",
                                                ConfigurationManager.AppSettings["WOPIServerName"],
                                                HttpUtility.UrlEncode(sourceDoc));
            return(View(wvModel));
        }