mirror of
				https://github.com/pelican-dev/panel.git
				synced 2025-10-31 06:16:51 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			97 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			97 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| import User from './../../models/user';
 | |
| 
 | |
| const route = require('./../../../../../vendor/tightenco/ziggy/src/js/route').default;
 | |
| 
 | |
| export default {
 | |
|     namespaced: true,
 | |
|     state: {
 | |
|         user: typeof window.PterodactylUser === 'object' ? new User(window.PterodactylUser) : null,
 | |
|     },
 | |
|     getters: {
 | |
|         /**
 | |
|          * Return the currently authenticated user.
 | |
|          *
 | |
|          * @param state
 | |
|          * @returns {User|null}
 | |
|          */
 | |
|         getUser: function (state) {
 | |
|             return state.user;
 | |
|         },
 | |
|     },
 | |
|     setters: {},
 | |
|     actions: {
 | |
|         /**
 | |
|          * Log a user into the Panel.
 | |
|          *
 | |
|          * @param commit
 | |
|          * @param {String} user
 | |
|          * @param {String} password
 | |
|          * @returns {Promise<any>}
 | |
|          */
 | |
|         login: ({commit}, {user, password}) => {
 | |
|             return new Promise((resolve, reject) => {
 | |
|                 window.axios.post(route('auth.login'), {user, password})
 | |
|                     .then(response => {
 | |
|                         commit('logout');
 | |
| 
 | |
|                         // If there is a 302 redirect or some other odd behavior (basically, response that isnt
 | |
|                         // in JSON format) throw an error and don't try to continue with the login.
 | |
|                         if (!(response.data instanceof Object)) {
 | |
|                             return reject(new Error('An error was encountered while processing this request.'));
 | |
|                         }
 | |
| 
 | |
|                         if (response.data.complete) {
 | |
|                             commit('login', response.data.user);
 | |
|                             return resolve({
 | |
|                                 complete: true,
 | |
|                                 intended: response.data.intended,
 | |
|                             });
 | |
|                         }
 | |
| 
 | |
|                         return resolve({
 | |
|                             complete: false,
 | |
|                             token: response.data.login_token,
 | |
|                         });
 | |
|                     })
 | |
|                     .catch(reject);
 | |
|             });
 | |
|         },
 | |
| 
 | |
|         /**
 | |
|          * Update a user's email address on the Panel and store the updated result in Vuex.
 | |
|          *
 | |
|          * @param commit
 | |
|          * @param {String} email
 | |
|          * @param {String} password
 | |
|          * @return {Promise<any>}
 | |
|          */
 | |
|         updateEmail: function ({commit}, {email, password}) {
 | |
|             return new Promise((resolve, reject) => {
 | |
|                 window.axios.put(route('api.client.account.update-email'), {email, password})
 | |
|                     .then(response => {
 | |
|                         // If there is a 302 redirect or some other odd behavior (basically, response that isnt
 | |
|                         // in JSON format) throw an error and don't try to continue with the login.
 | |
|                         if (!(response.data instanceof Object) && response.status !== 201) {
 | |
|                             return reject(new Error('An error was encountered while processing this request.'));
 | |
|                         }
 | |
| 
 | |
|                         commit('setEmail', email);
 | |
|                         return resolve();
 | |
|                     })
 | |
|                     .catch(reject);
 | |
|             });
 | |
|         },
 | |
|     },
 | |
|     mutations: {
 | |
|         setEmail: function (state, email) {
 | |
|             state.user.email = email;
 | |
|         },
 | |
|         login: function (state, data) {
 | |
|             state.user = new User(data);
 | |
|         },
 | |
|         logout: function (state) {
 | |
|             state.user = null;
 | |
|         },
 | |
|     },
 | |
| };
 | 
