From c2fa248b7908e310002332171231898df14f46bc Mon Sep 17 00:00:00 2001 From: Angus McLeod Date: Wed, 8 Nov 2017 08:45:18 +0800 Subject: [PATCH 1/2] Include stripe js && inherit from the application controller --- app/controllers/discourse_donations/charges_controller.rb | 6 +----- assets/javascripts/lib/vendor/stripe_v3.js | 1 + plugin.rb | 1 + 3 files changed, 3 insertions(+), 5 deletions(-) create mode 100644 assets/javascripts/lib/vendor/stripe_v3.js diff --git a/app/controllers/discourse_donations/charges_controller.rb b/app/controllers/discourse_donations/charges_controller.rb index 1600d1d..8f51e22 100644 --- a/app/controllers/discourse_donations/charges_controller.rb +++ b/app/controllers/discourse_donations/charges_controller.rb @@ -1,11 +1,7 @@ require_dependency 'discourse' module DiscourseDonations - class ChargesController < ActionController::Base - include CurrentUser - - protect_from_forgery prepend: true - protect_from_forgery with: :exception + class ChargesController < ApplicationController skip_before_action :verify_authenticity_token, only: [:create] diff --git a/assets/javascripts/lib/vendor/stripe_v3.js b/assets/javascripts/lib/vendor/stripe_v3.js new file mode 100644 index 0000000..360e5c8 --- /dev/null +++ b/assets/javascripts/lib/vendor/stripe_v3.js @@ -0,0 +1 @@ +!function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=0)}([function(e,t,n){e.exports=n(1)},function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function s(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}function C(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function T(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function A(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function j(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function R(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function q(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}function x(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function F(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function U(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function D(e,t){var n={};for(var r in e)t.indexOf(r)>=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}function B(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function z(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function H(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function V(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function K(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function Y(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function G(e,t){var n={};for(var r in e)t.indexOf(r)>=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}function J(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function $(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function W(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function Z(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t1&&void 0!==arguments[1]?arguments[1]:[]}},Te=function(e){return{error:e,errorType:"full",type:"error"}},Ae=function(e,t,n){return{expected:e,actual:String(t),options:n,errorType:"mismatch",type:"error"}},je=function(e){return function(t,n){return void 0===t?Ce(t):e(t,n)}},Re=function(e,t){return function(n,r){var o=e(n,r),i=t(n,r);return"error"===o.type&&"error"===i.type?"mismatch"===o.errorType?"mismatch"===i.errorType?Ae(o.expected+" or "+i.expected,n,r):Te(i.error):Te(o.error):"valid"===o.type?o:i}},qe=function(){for(var e=arguments.length,t=Array(e),n=0;n1&&void 0!==arguments[1]?arguments[1]:null,n=Ge(e);return!!n&&n.host!==(t||window.location.host)},$e={TOKENIZE:"TOKENIZE",FETCH_LOCALE:"FETCH_LOCALE",UPDATE_CSS_FONTS:"UPDATE_CSS_FONTS",CREATE_SOURCE:"CREATE_SOURCE",AUTHORIZE_SOURCE:"AUTHORIZE_SOURCE",GET_AUTHORIZATION_STATUS:"GET_AUTHORIZATION_STATUS",RETRIEVE_SOURCE:"RETRIEVE_SOURCE",CREATE_APPLE_PAY_SESSION:"CREATE_APPLE_PAY_SESSION"},We=$e,Ze={CARD_ELEMENT:"CARD_ELEMENT",CONTROLLER:"CONTROLLER",METRICS_CONTROLLER:"METRICS_CONTROLLER",PAYMENT_REQUEST_ELEMENT:"PAYMENT_REQUEST_ELEMENT",PAYMENT_REQUEST:"PAYMENT_REQUEST"},Qe=Ze,Xe=function(e){return"https://js.stripe.com/v3/"+(e||"")},et=(oe={},u(oe,Qe.CARD_ELEMENT,Xe("elements-inner-card-8801e662d74c286b04d63b2b8cb8e16d.html")),u(oe,Qe.CONTROLLER,Xe("controller-8cc85e5837c64cb7c800a9782e2fe506.html")),u(oe,Qe.METRICS_CONTROLLER,"https://js.stripe.com/v2/m/outer.html"),u(oe,Qe.PAYMENT_REQUEST_ELEMENT,Xe("elements-inner-payment-request-3f5a5fac4bd88751c5ebf2315619007e.html")),u(oe,Qe.PAYMENT_REQUEST,Xe("payment-request-inner-8782eb8456a7fab00d554218113e172f.html")),oe),tt=et,nt=Ge("https://js.stripe.com/v3/"),rt=nt?nt.origin:"",ot={family:"font-family",src:"src",unicodeRange:"unicode-range",style:"font-style",variant:"font-variant",stretch:"font-stretch",weight:"font-weight"},it=Object.keys(ot).reduce(function(e,t){return e[ot[t]]=t,e},{}),at=0,st=function(e){return""+e+at++},ut=function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return t?(parseInt(t,10)^16*Math.random()>>parseInt(t,10)/4).toString(16):"00000000-0000-4000-8000-000000000000".replace(/[08]/g,e)},ct="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},lt=function e(t,n){var r=[];return Object.keys(t).forEach(function(o){var i=t[o],a=n?n+"["+o+"]":o;if(i&&"object"===(void 0===i?"undefined":ct(i))){var s=e(i,a);""!==s&&(r=[].concat(c(r),[s]))}else void 0!==i&&null!==i&&(r=[].concat(c(r),[a+"="+encodeURIComponent(String(i))]))}),r.join("&").replace(/%20/g,"+")},pt=lt,ft=n(2),dt=n.n(ft),ht=window.Promise||dt.a,yt=ht,mt=n(6),_t=n.n(mt),vt=function(){function e(e,t){var n=[],r=!0,o=!1,i=void 0;try{for(var a,s=e[Symbol.iterator]();!(r=(a=s.next()).done)&&(n.push(a.value),!t||n.length!==t);r=!0);}catch(e){o=!0,i=e}finally{try{!r&&s.return&&s.return()}finally{if(o)throw i}}return n}return function(t,n){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),bt=function(e,t){var n={};t.forEach(function(e){var t=vt(e,2),r=t[0],o=t[1];r.split(/\s+/).forEach(function(e){e&&(n[e]=n[e]||o)})}),e.className=_t()(e.className,n)},gt=function(e,t){e.style.cssText=Object.keys(t).map(function(e){return e+": "+t[e]+" !important;"}).join(" ")},wt=function(e){try{return window.parent.frames[e]}catch(e){return null}},Et=Object.assign||function(e){for(var t=1;t0}},{key:"once",value:function(e,t){var n=this,r=function r(){n.off(e,r),t.apply(void 0,arguments)};return this._addEventListener(e,r,t)}},{key:"emit",value:function(e){for(var t=arguments.length,n=Array(t>1?t-1:0),r=1;r1&&void 0!==arguments[1]?arguments[1]:{},r=st(e),o=new yt(function(o,i){t._requests[r]=Tt({},t._requests[r],{resolve:o,reject:i}),t._send({message:{action:"stripe-frame-action",payload:{type:e,nonce:r,options:n}},type:"outer",frameId:t.id,controllerId:t._controllerId})});return this._requests[r]=Tt({},this._requests[r],{promise:o}),o}},{key:"resolve",value:function(e,t){this._requests[e]&&this._requests[e].resolve(t)}},{key:"_send",value:function(e){this._ensureMounted(),this.loaded?Ot(e):this._queuedMessages=[].concat(p(this._queuedMessages),[e])}},{key:"appendTo",value:function(e){e.appendChild(this._iframe)}},{key:"unmount",value:function(){this.loaded=!1,this.emit("unload")}},{key:"_ensureMounted",value:function(){this._isMounted()||this.unmount()}},{key:"_isMounted",value:function(){return!!document.body&&document.body.contains(this._iframe)}},{key:"_createIFrame",value:function(e){var t=window.location.href.toString(),n=Ge(t),r=n?n.origin:"",o=e.queryString&&"string"==typeof e.queryString?e.queryString:pt(Tt({},e,{origin:r,referrer:t,controllerId:this._controllerId})),i=document.createElement("iframe");return i.setAttribute("frameborder","0"),i.setAttribute("allowTransparency","true"),i.setAttribute("scrolling","no"),i.setAttribute("name",this.id),i.setAttribute("allowpaymentrequest","true"),i.src=tt[this.type]+"#"+o,i}}]),t}(Ct),Rt=jt,qt=function(){function e(e,t){for(var n=0;n element.");this.autoload&&(this.loaded=!0)}},{key:"_createIFrame",value:function(e){var n=Mt(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"_createIFrame",this).call(this,e);return n.setAttribute("aria-hidden","true"),n.setAttribute("allowpaymentrequest","true"),n.setAttribute("tabIndex","-1"),gt(n,It),n}}]),t}(Rt),Lt=Nt,xt=function(){function e(e,t){for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:{};this._controllerFrame.send({action:"stripe-controller-report",payload:{event:e,data:t}})}},{key:"_setupPostMessage",value:function(){var e=this;window.addEventListener("message",function(t){var n=t.data,r=t.origin,o=St(n);o&&Yt(rt,r)&&e._handleMessage(o)})}},{key:"_handleMessage",value:function(e){var t=this,n=e.controllerId,r=e.frameId,o=e.message,i=this._frames[r];if(n===this._id)switch(o.action){case"stripe-frame-event":var a=o.payload,s=a.event,u=a.data;if(i)if(Qt)if("focus"===s&&!cn&&document.activeElement!==i._iframe&&i._iframe.parentElement&&document.activeElement!==i._iframe.parentElement.querySelector("__PrivateStripeElement-input")){var c=i._iframe.parentElement.querySelector("__PrivateStripeElement-input");c&&c.focus(),cn=!0}else"blur"===s&&cn?cn=!1:i.emit(s,u);else i.emit(s,u);break;case"stripe-frame-action-complete":i&&i.resolve(o.payload.nonce,o.payload.result);break;case"stripe-frame-error":throw new le(o.payload.message);case"stripe-integration-error":i&&i.emit("__privateIntegrationError",{message:o.payload.message});break;case"stripe-controller-load":this._controllerFrame.emit("load"),Object.keys(this._frames).forEach(function(e){return t._frames[e].send({action:"stripe-controller-load",payload:{}})});break;case"stripe-user-action-complete":this._requests[o.payload.nonce]&&this._requests[o.payload.nonce].resolve(o.payload.result);break;case"stripe-user-action-error":this._requests[o.payload.nonce]&&this._requests[o.payload.nonce].reject(new le(o.payload.error))}}}]),e}(),pn=ln,fn=function(e){function t(){T(this,t);var e=A(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return e.name="NetworkError",e}return j(t,e),t}(Error),dn=fn,hn=Object.assign||function(e){for(var t=1;t=0,o=e.getBoundingClientRect(),i=o.width>0&&o.height>0;n&&i&&r.push(e)});var o=he(r,function(t){return t===e||e.contains(t)});return r[o+("previous"===t?-1:1)]},An=Tn,jn="14px",Rn=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"1.2em",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:jn;if(/^[0-9.]+px$/.test(e))return e;var n=parseFloat(e.toString().replace(/[^0-9.]/g,"")),r=parseFloat(jn.replace(/[^0-9.]/g,"")),o=parseFloat(t.toString().replace(/[^0-9.]/g,"")),i=void 0;if(/^(\d+|\d*\.\d+)px$/.test(t))i=o;else if(/^(\d+|\d*\.\d+)em$/.test(t))i=o*r;else if(/^(\d+|\d*\.\d+)%$/.test(t))i=o/100*r;else{if(!/^[\d.]+$/.test(t)&&!/^\d*\.(px|em|%)$/.test(t))return"100%";i=r}var a=n*i+"px";return/^[0-9.]+px$/.test(a)?a:"100%"},qn=Rn,Mn=function(e,t){return e?window.getComputedStyle(e,t):null},In=Mn,Nn=function(){if(!window.PaymentRequest)return null;if(/CriOS\/59/.test(navigator.userAgent))return null;if(/.*\(.*; wv\).*Chrome\/(?:53|54)\.\d.*/g.test(navigator.userAgent))return null;var e=window.PaymentRequest;return Zt&&!e.prototype.canMakePayment?e.prototype.canMakePayment=function(){return yt.resolve(!0)}:e.prototype.canMakePayment||(e.prototype.canMakePayment=function(){return yt.resolve(!1)}),e}(),Ln={CAN_MAKE_PAYMENT:"CAN_MAKE_PAYMENT"},xn=function(){try{return window.location.origin===window.top.location.origin}catch(e){return!1}},Fn=void 0,Un=function(e){var t={};return function(n){if(void 0!==t[n])return t[n];var r=e(n);return t[n]=r,r}}(function(e){return window.ApplePaySession.canMakePaymentsWithActiveCard(e).then(function(e){return Fn&&Fn("payreq.can_make_payment_native_response",{available:e}),e})}),Dn=function(e,t,n,r){if(Fn=r,window.ApplePaySession){if(xn()){if(n&&"https:"!==window.location.protocol)return window.console&&window.console.warn("To test Apple Pay, you must serve this page over HTTPS."),yt.resolve(!1);if(window.ApplePaySession.supportsVersion(2)){var o=t?[e,t]:[e],i="merchant."+o.join(".")+".stripe";return Un(i).then(function(r){if(n&&!r&&window.console){var o=t?"or stripeAccount parameter ("+t+") ":"";window.console.warn("Either you do not have a card saved to your Wallet or the current domain ("+e+") "+o+"is not registered for Apple Pay. Visit https://dashboard.stripe.com/account/apple_pay to register this domain.")}return r})}return n&&window.console&&window.console.warn("This version of Safari does not support ApplePay JS version 2."),yt.resolve(!1)}return yt.resolve(!1)}return yt.resolve(!1)},Bn=null,zn=function(e,t){return null!==Bn?yt.resolve(Bn):Nn?Zt?yt.resolve(!1):t&&"https:"!==window.location.protocol?(window.console&&window.console.warn("To test Payment Request, you must serve this page over HTTPS."),yt.resolve(!1)):e?e.action(Ln.CAN_MAKE_PAYMENT).then(function(e){var t=e.available;return Bn="boolean"==typeof t&&t}):yt.resolve(!1):yt.resolve(!1)},Hn=Object.assign||function(e){for(var t=1;t1&&this._controller.warn("The selector you specified ("+e+") applies to "+n.length+" DOM elements that are currently on the page.\nThe Stripe Element will be mounted to the first one."),!n.length)throw new le("The selector you specified ("+e+") applies to no DOM elements that are currently on the page.\nMake sure the element exists on the page before calling mount().");t=n[0]}else{if(!e.appendChild)throw new le("Invalid DOM element. Make sure to call mount() with a valid DOM element or selector.");t=e}if("INPUT"===t.nodeName)throw new le("Stripe Elements must be mounted in a DOM element that\ncan contain child nodes. `input` elements are not permitted to have child\nnodes. Try using a `div` element instead.");if(t.children.length&&this._controller.warn("This Element will be mounted to a DOM element that contains child nodes."),this._paymentRequest){if(!this._paymentRequest._canMakePaymentCalled)throw new le("For paymentRequest Elements, you must first check the Payment Request API's\navailability using paymentRequest.canMakePayment() before mounting the Element.");if(!this._paymentRequest._cachedCanMakePayment)throw new le("The "+this._componentName+" Element is not available in the current environment.");this._mountToParent(t)}else this._mountToParent(t)}},{key:"_mountToParent",value:function(e){var t=this._component.parentElement,n=this._isMounted();if(e===t){if(n)return;this.unmount(),this._mountTo(e)}else if(t){if(n)throw new le("This Element is already mounted. Use `unmount()` to unmount the Element before re-mounting.");this.unmount(),this._mountTo(e)}else this._mountTo(e)}},{key:"update",value:function(e){var t=this;this._checkDestroyed();var n=Ke(Wr,e||{},"element.update()"),r=n.value;if(n.warnings.forEach(function(e){return t._controller.warn(e)}),r){var o=r.classes,i=G(r,["classes"]);this._changeClasses(o||{}),this._updateFrameHeight(r),Object.keys(i).length&&this._frame.update(i)}return this}},{key:"clear",value:function(){return this._checkDestroyed(),this._frame.clear(),this}},{key:"unmount",value:function(){this._checkDestroyed();var e=this._component.parentElement,t=this._label;return e&&(e.removeChild(this._component),e.removeEventListener("click",this.focus),this._removeClasses()),this._parent=null,t&&(t.removeEventListener("click",this.focus),this._label=null),this._fakeInput.disabled=!0,this._frame.unmount(),this}},{key:"destroy",value:function(){return this._checkDestroyed(),this.unmount(),this._destroyed=!0,this.emit("destroy"),this}},{key:"_checkDestroyed",value:function(){if(this._destroyed)throw new le("This Element has already been destroyed. Please create a new one.")}},{key:"_isMounted",value:function(){return!!document.body&&document.body.contains(this._component)}},{key:"_mountTo",value:function(e){var t=Date.now(),n=In(e,null),r=!!n&&"rtl"===n.getPropertyValue("direction");for(this._parent=e;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(this._component),this._frame.send({action:"stripe-user-mount",payload:{mountTime:t,rtl:r}}),this._findPossibleLabel(),this._updateClasses()}},{key:"_updateClasses",value:function(){this._parent&&bt(this._parent,[[this._classes.base,!0],[this._classes.empty,this._empty],[this._classes.focus,this._focused],[this._classes.invalid,this._invalid],[this._classes.complete,this._complete],[this._classes.webkitAutofill,this._autofilled]])}},{key:"_removeClasses",value:function(){this._parent&&bt(this._parent,[[this._classes.base,!1],[this._classes.empty,!1],[this._classes.focus,!1],[this._classes.invalid,!1],[this._classes.complete,!1],[this._classes.webkitAutofill,!1]])}},{key:"_findPossibleLabel",value:function(){var e=this._parent;if(e){var t=e.getAttribute("id"),n=void 0;if(t&&(n=document.querySelector("label[for="+t+"]")),n)e.addEventListener("click",this.focus);else for(n=n||e.parentElement;n&&"LABEL"!==n.nodeName;)n=n.parentElement;n?(this._label=n,n.addEventListener("click",this.focus)):e.addEventListener("click",this.focus)}}},{key:"_changeClasses",value:function(e){var t={};return Object.keys(e).forEach(function(n){if(!Zr[n])throw new le(n+" is not a customizable class name.\nYou can customize: "+Object.keys(Zr).join(", "));var r=e[n]||Zr[n];t[n]=r.replace(/\./g," ")}),this._classes=Gr({},this._classes,t),this}},{key:"_setupEvents",value:function(){var e=this;this._frame.on("redirectfocus",function(t){var n=t.focusDirection,r=An(e._component,n);r&&r.focus()}),this._frame.on("focus",function(){e._focused=!0,e._updateClasses()}),this._frame.on("blur",function(){e._focused=!1,e._updateClasses()}),this._frame.on("submit",function(){if("paymentRequestButton"===e._componentName){var t=!1,n=!1;e.emit("click",{preventDefault:function(){e._controller.report("payment_request_button.default_prevented"),t&&e._controller.warn("event.preventDefault() was called after the payment sheet was shown. Make sure to call it synchronously when handling the `click` event."),n=!0}}),!n&&e._paymentRequest&&(e._paymentRequest._elementShow(),t=!0)}else e.emit("submit")}),["ready","focus","blur","escape"].forEach(function(t){e._frame.on(t,function(){e.emit(t)})}),this._frame.on("change",function(t){var n=t.error,r=t.brand,o=t.value,i=t.empty,a=t.complete;e.emit("change",{error:n,brand:r,value:o,empty:i,complete:a}),e._empty=i,e._invalid=!!n,e._complete=a,e._updateClasses()}),this._frame.on("__privateIntegrationError",function(t){var n=t.message;e.emit("__privateIntegrationError",{message:n})}),this._frame.on("dimensions",function(t){if(e._parent){var n=In(e._parent,null);if(n){var r=parseFloat(n.getPropertyValue("height")),o=t.height;if("border-box"===n.getPropertyValue("box-sizing")){var i=parseFloat(n.getPropertyValue("padding-top")),a=parseFloat(n.getPropertyValue("padding-bottom"));r=r-parseFloat(n.getPropertyValue("border-top"))-parseFloat(n.getPropertyValue("border-bottom"))-i-a}0!==r&&eo(r)1&&void 0!==arguments[1]&&arguments[1];if("paymentRequestButton"===this._componentName){var n=e.style&&e.style.paymentRequestButton||{},r=n.height,o="string"==typeof r?r:void 0;(t||o)&&(this._frame.updateStyle({height:o||this._lastHeight||"40px"}),this._lastHeight=o||this._lastHeight)}else{var i=e.style&&e.style.base||{},a=i.lineHeight,s=i.fontSize,u="string"!=typeof a||isNaN(parseFloat(a))?void 0:a,c="string"==typeof s?s:void 0;if(c&&!to(c)&&this._controller.warn("The fontSize style you specified ("+c+") is not in px. We do not recommend using relative css units, as they will be calculated relative to our iframe's styles rather than your site's."),t||u||c){var l=qn(u||this._lastHeight,c||this._lastFontSize);this._frame.updateStyle({height:l}),this._lastFontSize=c||this._lastFontSize,this._lastHeight=u||this._lastHeight}}}},{key:"_createElement",value:function(e,t){var n=(e.classes,e.controller,e.paymentRequest,G(e,["classes","controller","paymentRequest"])),r=document.createElement("div");r.className="__PrivateStripeElement";var o=document.createElement("input");o.className="__PrivateStripeElement-input",gt(r,Qr),gt(o,Xr),o.setAttribute("aria-hidden","true"),o.disabled=!0;var i=In(document.body),a=!!i&&"rtl"===i.getPropertyValue("direction"),s=on[t],u=this._controller.createElementFrame(s,Gr({},n,{rtl:a}));u.on("load",function(){o.disabled=!1}),o.addEventListener("focus",function(){u.focus()}),u.appendTo(r),r.appendChild(o),this._component=r,this._frame=u,this._fakeInput=o}}]),t}(Ct),ro=no,oo=Object.assign||function(e){for(var t=1;t=10&&(e.report("mouse-timings-10",t),document.removeEventListener("mousemove",r)),n=o}catch(e){}};document.addEventListener("mousemove",r)}},{key:"_buildFrameQueryString",value:function(){var e=document.location.href,t={url:e,title:document.title,referrer:document.referrer,muid:this._muid,sid:this._sid,preview:Kt(e)};return Object.keys(t).map(function(e){return e+"="+encodeURIComponent(t[e].toString())}).join("&")}},{key:"_getID",value:function(e){switch(e){case yo.MERCHANT:try{var t=po("__stripe_mid")||ut();return lo({name:"__stripe_mid",value:t,domain:"."+document.location.hostname}),t}catch(e){return"NA"}case yo.SESSION:try{var n=po("__stripe_sid")||ut();return lo({name:"__stripe_sid",value:n,domain:"."+document.location.hostname,expiresIn:18e5}),n}catch(e){return"NA"}default:throw new Error("Invalid ID type specified: "+e)}}}]),t}(Ct),_o=mo,vo=function(e){for(var t=0,n=0;nc){for(var t=0,n=a.length-u;t Date: Wed, 8 Nov 2017 08:58:38 +0800 Subject: [PATCH 2/2] Inherit from the application controller --- app/controllers/discourse_donations/checkout_controller.rb | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/app/controllers/discourse_donations/checkout_controller.rb b/app/controllers/discourse_donations/checkout_controller.rb index 48435aa..192e239 100644 --- a/app/controllers/discourse_donations/checkout_controller.rb +++ b/app/controllers/discourse_donations/checkout_controller.rb @@ -1,11 +1,7 @@ require_dependency 'discourse' module DiscourseDonations - class CheckoutController < ActionController::Base - include CurrentUser - - protect_from_forgery prepend: true - protect_from_forgery with: :exception + class CheckoutController < ApplicationController skip_before_action :verify_authenticity_token, only: [:create]