1.1.0 • Published 6 years ago

@sungaoxiang/vue-sso v1.1.0

Weekly downloads
1
License
MIT
Repository
-
Last release
6 years ago

vue-sso

SSO component for Vue.js.

Table of Contents

Main

dist/
├── vue-sso.js        (UMD)
├── vue-sso.min.js    (UMD, compressed)
├── vue-sso.common.js (CommonJS, default)
└── vue-sso.esm.js    (ES Module)

Getting Started

Install

npm install @xkeshi/vue-sso

Usage

  • Browser: window.VueSSO
  • CommonJS: var VueSSO = require('@xkeshi/vue-sso')
  • ES2015: import VueSSO from '@xkeshi/vue-sso'

Use as a library

import VueSSO from '@xkeshi/vue-sso';

VueSSO.open('/path/to/sso', {
  success: () => {
    console.log('Login success');
    VueSSO.close();
  },
});

Use as a Vue plugin

<div id="app">
  <button type="button" @click="openSSO">Open SSO</button>
</div>
import Vue from 'vue';
import VueSSO from '@xkeshi/vue-sso';

Vue.use(VueSSO);

new Vue({
  el: '#app',
  methods: {
    openOSS() {
      this.$sso.open('/path/to/sso', {
        success: () => {
          console.log('Login success');
          this.$sso.close();
        },
      });
    },
  },
});

⬆ back to top

API Methods

open(url, options)

  • url:
    • Type: string
    • The target SSO url to open.
  • options (optional):
    • Type: Object
  • (return value):
    • Type: Promise
    • The promise will be resolved when the dialog has shown completely.

Open the SSO dialog.

All the available options:

OptionTypeDefaultDescription
titlestring'登录'The title of the dialog.
widthnumber360The width of the dialog.
zIndexnumber1000The z-index of the dialog.
backdropbooleantrueCloses the dialog when the modal is clicked.
keyboardbooleantrueCloses the dialog when the escape key is pressed.
successFunctionnullThe login success callback.
errorFunctionnullThe login error callback.

close()

  • (return value):
    • Type: Promise
    • The promise will be resolved when the dialog has hidden completely.

Close the SSO dialog.

⬆ back to top

SSO Config

// In login page
window.addEventListener('message', function (e) {
  var errors = document.querySelector('.errors');
  var error = errors ? errors.textContent : '';
  var body = document.body;
  var data = e.data;

  if (data && data.type === 'check.sso') {
    e.source.postMessage({
      type: error ? 'error.sso' : 'process.sso',
      message: error,
      clientWidth: body.clientWidth,
      clientHeight: body.clientHeight,
      scrollWidth: body.scrollWidth,
      scrollHeight: body.scrollHeight
    }, e.origin);
  }
});
// In login success page
window.addEventListener('message', function (e) {
  var body = document.body;
  var data = e.data;

  if (data && data.type === 'check.sso') {
    e.source.postMessage({
      type: 'success.sso',
      clientWidth: body.clientWidth,
      clientHeight: body.clientHeight,
      scrollWidth: body.scrollWidth,
      scrollHeight: body.scrollHeight
    }, e.origin);
  }
});

Browser Support

  • Chrome (latest)
  • Firefox (latest)
  • Safari (latest)
  • Opera (latest)
  • Edge (latest)
  • Internet Explorer 11+

Versioning

Maintained under the Semantic Versioning guidelines.

License

MIT © Xkeshi

⬆ back to top