PageSourceSearch

https://g2ggrand.today/g_assets/js/login.js?v=5485ed4&lang=th

js g2ggrand.today collected 2026-10-10 01:48:09 UTC 5,997 bytes, 141 lines download raw bytes

1// cache: 2026-10-01 13:37:00
2new Vue({
3    el: '#app',
4    mixins: [_V],
5    data() {
6        return {
7            convert_redirect : {
8                '/member/baccarat': '/member#/games/baccarat',
9                '/member/poker': '/member#/games/poker',
10                '/member/slot' : '/member#/games/slot',
11                '/member?game=sport': 'sport',
12                '/member?game=lotto': 'lotto',
13                '/member/recommended':'/member#/ref',
14                '/member/deposit': '/member#/deposit',
15                '/member/withdraw': '/member#/withdraw',
16                'member/baccarat': '/member#/games/baccarat',
17                'member/poker': '/member#/games/poker',
18                'member/slot' : '/member#/games/slot',
19                'member?game=sport': 'sport',
20                'member?game=lotto': 'lotto',
21                'member/recommended':'/member#/ref',
22                'member/deposit': '/member#/deposit',
23                'member/withdraw': '/member#/withdraw',
24            },
25            fm: {tel: '', pin: ''},
26            remember: false,
27            loading: false,
28        }
29    },
30    methods: {
31        async submit() {
32            // Prevent spam clicking
33            if (this.loading) return;
34
35            this.redirect_hold = true;
36            if (!/0\d{9}/.test(this.fm.tel)) return modal.error('กรุณากรอกเบอร์โทรศัพท์ให้ถูกต้อง');
37            if (!/^\d{4}$/.test(this.fm.pin)) return modal.error('กรุณากรอก Pin ให้ถูกต้อง');
38
39            // Set loading state and show loading indicator
40            this.loading = true;
41            Swal.fire({
42                title: 'กำลังเข้าสู่ระบบ...',
43                allowOutsideClick: false,
44                allowEscapeKey: false,
45                showConfirmButton: false,
46                didOpen: () => {
47                    Swal.showLoading();
48                }
49            });
50
51            try {
52                if(this.sch.has('target') || this.sch.has('game')) this.force_target = true;
53                let res = await this.easy.callApi('login_pin', this.fm);
54
55                // Close loading indicator
56                Swal.close();
57
58                if (!res.success) {
59                    if(res.data === "เบอร์โทรหรือ pin ไม่ถูกต้อง"){
60                        res.data = 'เบอร์โทรหรือ pin ไม่ถูกต้อง';
61                    }
62                    this.loading = false;
63                    return modal.error(res.data, res.title).then(r=>{
64                        if (res.code === 'ALREADY_LOGIN') return location.replace('/member');
65                    });
66                }
67
68                Cookies.remove('member_popup_seen'); // new login session -> show welcome popup again on main page
69
70                await modal.success('', 'สำเร็จ',
71                    {
72                    allowOutsideClick: false,
73                    showConfirmButton:false,
74                    timer: 1200
75                });
76                if (this.remember) localStorage.setItem('usr_remember', JSON.stringify(this.fm));
77                else localStorage.removeItem('usr_remember');
78
79                this.redirect_hold = false;
80                let sch = new URLSearchParams(window.location.search);
81                let redirect = sch.get('redirect');
82                if(!redirect) return location.replace('/member');
83                let pathname = this.convert_redirect[redirect] ? this.convert_redirect[redirect] : '/member#';
84                let dest =  location.origin + pathname;
85                console.log('login by click menu line !');
86                switch (this.convert_redirect[redirect]) {
87                    case 'sport': location.replace('/member?play_game=sport'); break;
88                    case 'lotto': location.replace('/member?play_game=lotto'); break;
89                    default:  location.replace(dest);
90                }
91            } catch (error) {
92                // Handle any unexpected errors
93                console.error('Login error:', error);
94                Swal.close();
95                this.loading = false;
96                modal.error('เกิดข้อผิดพลาด กรุณาลองใหม่อีกครั้ง: ' + (error.message || error));
97            }
98        }
99
100    },
101    watch: {
102        'fm.tel'(val) {
103            if (val.length >= 10) $('#pinBox').focus();
104        },
105        'fm.pin'(val) {
106            if (val.length === 4) $('#btnLog').focus();
107        }
108    },
109    async created() {
110        console.log('[login created.]');
111       
112        let remember = localStorage.getItem('usr_remember');
113        if (remember) {
114            this.fm = JSON.parse(remember);
115            this.remember = true;
116        }
117        const sch = this.sch;
118        if (sch.has('tel')) {
119            this.fm.tel = sch.get('tel');
120            if (!sch.has('pin')) return;
121            this.fm.pin = sch.get('pin');
122            this.submit();
123        }
124        if (sch.has('lid') && sch.has('hid')) {
125           
126            if (!sch.has('redirect')) return;
127            
128            let to = sch.get('redirect');
129            if (!this.convert_redirect[to]) return;
130            await this.$root.logout(true);
131            let rs = await this.$root.easy.callApi('login_line', {lid: sch.get('lid'), hid: sch.get('hid')});
132            if (!rs.success) return;
133            console.log('auto login by click menu line !');
134            switch (this.convert_redirect[to]) {
135                case 'sport': location.replace('/member?play_game=sport'); break;
136                case 'lotto': location.replace('/member?play_game=lotto'); break;
137                default: this.convert_redirect[to] ? location.replace(location.origin + this.convert_redirect[to]) : location.replace(location.origin+'/member#');
138            }
139        }
140    },
141});

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.