Skip to content

Instantly share code, notes, and snippets.

@philiplambok
Last active September 4, 2019 04:22
Show Gist options
  • Save philiplambok/a3ae0b0bfdef8cd48320aba6409bac96 to your computer and use it in GitHub Desktop.
Save philiplambok/a3ae0b0bfdef8cd48320aba6409bac96 to your computer and use it in GitHub Desktop.
proposal-refactor-csrf-token.md

Before

<template>....</template>

<script>
export default {
  data(){
    return {
      user: {
        username: "",
        fullName: ""
      },
      successMessage: ""
    }
  },
  methods: {
    createUser() {
      let csrfMetaDOM = document.querySelector('meta[name="csrf-token"]');
      let csrfToken = "";
      if (csrfMetaDOM) {
        csrfToken = csrfMetaDOM.content;
      }
      fetch("/api/v1/users", {
        method: "POST",
        headers: {
          "Content-type": "application/json",
          "X-CSRF-Token": csrfToken
        },
        body: JSON.stringify(this.user)
      })
        .then(response => response.json())
        .then(data => {
          this.successMessage = "Create user was successfully";
        });
    }
  }
};
</script>

After

export default class CSRFMeta {
  constructor() { }

  findToken() {
    let csrfMetaDOM = document.querySelector('meta[name="csrf-token"]');
    let csrfToken = "";
    if (csrfMetaDOM) {
      csrfToken = csrfMetaDOM.content;
    }
    return csrfToken;
  }
}
<template>....</template>

<script>
import CSRFMeta from "../lib/csrf_meta"; 
export default {
  data(){
    return {
      user: {
        username: "",
        fullName: ""
      },
      successMessage: ""
    }
  },
  methods: {
    createUser() {
      let csrfMeta = new CSRFMeta();
      let csrfToken = csrfMeta.findToken();
      fetch("/api/v1/users", {
        method: "POST",
        headers: {
          "Content-type": "application/json",
          "X-CSRF-Token": csrfToken
        },
        body: JSON.stringify(this.user)
      })
        .then(response => response.json())
        .then(data => {
          this.successMessage = "Create user was successfully";
        });
    }
  }
};
</script>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment