Advertisement
Guest User

Untitled

a guest
May 25th, 2019
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Dart 6.67 KB | None | 0 0
  1. /*
  2. * Copyright 2018 Ruben Talstra and Yvan Watchman
  3. *
  4. * Licensed under the GNU General Public License v3.0 (the "License");
  5. * you may not use this file except in compliance with the License.
  6. * You may obtain a copy of the License at
  7. *
  8. *    https://www.gnu.org/licenses/gpl-3.0
  9. *
  10. * Unless required by applicable law or agreed to in writing, software
  11. * distributed under the License is distributed on an "AS IS" BASIS,
  12. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13. * See the License for the specific language governing permissions and
  14. * limitations under the License.
  15. */
  16. import 'dart:async';
  17. import 'package:pterodactyl_app/page/auth/shared_preferences_helper.dart';
  18. import 'package:pterodactyl_app/page/client/home.dart';
  19. import 'package:http/http.dart' as http;
  20. import 'package:flutter/material.dart';
  21. import 'package:shared_preferences/shared_preferences.dart';
  22. import 'package:pterodactyl_app/page/admin/adminhome.dart';
  23. import 'package:pterodactyl_app/page/company/deploys/client/home.dart';
  24. import 'package:pterodactyl_app/page/auth/selecthost.dart';
  25.  
  26. class Splash extends StatefulWidget {
  27.   @override
  28.   SplashState createState() => new SplashState();
  29. }
  30.  
  31. class SplashState extends State<Splash> {
  32.   BuildContext context;
  33.  
  34.  
  35.   Future checkFirstSeen() async {
  36.     SharedPreferences prefs = await SharedPreferences.getInstance();
  37.     bool _selectpage = (prefs.getBool('selectpage') ?? false);
  38.     if (_selectpage) {
  39.       if (await isAuthenticated()) {
  40.         Navigator.of(context).pushReplacement(
  41.             new MaterialPageRoute(builder: (context) => new SelectHostPage()));
  42.       }
  43.     }
  44.   }
  45.  
  46.   Future checkDeploysSeen() async {
  47.     SharedPreferences prefs = await SharedPreferences.getInstance();
  48.     bool _deploys = (prefs.getBool('deploys') ?? true);
  49. if (_deploys && await isAuthenticated(isDeploys: true)) {
  50.       Navigator.of(context).pushReplacement(
  51.           new MaterialPageRoute(builder: (context) => new MyDeploysHomePage()));
  52.     } else {
  53.       prefs.setBool('deploys', false);
  54.       Navigator.of(context).pushReplacement(
  55.           new MaterialPageRoute(builder: (context) => new SelectHostPage()));
  56.     }
  57.   }  
  58.  
  59.   Future checkLoginSeen() async {
  60.     SharedPreferences prefs = await SharedPreferences.getInstance();
  61.     bool _seen = (prefs.getBool('seen') ?? true);
  62.     if (_seen) {
  63.       if (await isAuthenticated()) {
  64.         Navigator.of(context).pushReplacement(
  65.             new MaterialPageRoute(builder: (context) => new MyHomePage()));
  66.       }
  67.     } else {
  68.       prefs.setBool('seen', false);
  69.       Navigator.of(context).pushReplacement(
  70.           new MaterialPageRoute(builder: (context) => new SelectHostPage()));
  71.     }
  72.   }  
  73.  
  74.  
  75.   Future admincheckFirstSeen() async {
  76.     SharedPreferences prefs = await SharedPreferences.getInstance();
  77.     bool _seenadmin = (prefs.getBool('seenadmin') ?? true);
  78.  
  79.     if (_seenadmin && await isAuthenticated(isAdmin: true)) {
  80.       Navigator.of(context).pushReplacement(
  81.           new MaterialPageRoute(builder: (context) => new AdminHomePage()));
  82.     } else {
  83.       prefs.setBool('seenadmin', false);
  84.       Navigator.of(context).pushReplacement(
  85.           new MaterialPageRoute(builder: (context) => new SelectHostPage()));
  86.     }
  87.   }
  88.  
  89.   Future<bool> isAuthenticated({isAdmin = true, isDeploys = true}) async {
  90.     if (isDeploys) {
  91.       String _apikey = await SharedPreferencesHelper.getString("api_deploys_Key");
  92.  
  93.       if (_apikey.isEmpty) {
  94.         SharedPreferencesHelper.remove('api_deploys_Key');
  95.         Navigator.of(context)
  96.             .pushNamedAndRemoveUntil('/selecthost', (Route<dynamic> route) => false);
  97.         return false;
  98.       }
  99.  
  100.       http.Response response = await http.get(
  101.         "https://panel.deploys.io/api/client",
  102.         headers: {
  103.           "Accept": "Application/vnd.pterodactyl.v1+json",
  104.           "Authorization": "Bearer $_apikey"
  105.         },
  106.       );
  107.  
  108.       print(response.statusCode);
  109.  
  110.       if (response.statusCode == 401) {
  111.         // Todo fix Navigation context for logging out if key isn't available
  112.         SharedPreferencesHelper.remove('api_deploys_Key');
  113.         Navigator.of(context)
  114.             .pushNamedAndRemoveUntil('/selecthost', (Route<dynamic> route) => false);
  115.         return false;
  116.       } else {
  117.         return true;
  118.       }
  119.     } if (isAdmin) {
  120.       String _apiadmin = await SharedPreferencesHelper.getString("apiAdminKey");
  121.       String _adminhttps =
  122.           await SharedPreferencesHelper.getString("adminhttps");
  123.       String _urladmin =
  124.           await SharedPreferencesHelper.getString("panelAdminUrl");
  125.  
  126.       if (_urladmin.isEmpty) {
  127.         SharedPreferencesHelper.remove('apiAdminKey');
  128.         Navigator.of(context).pushNamedAndRemoveUntil(
  129.             '/adminlogin', (Route<dynamic> route) => false);
  130.         return false;
  131.       }
  132.  
  133.       http.Response response = await http.get(
  134.         "$_adminhttps$_urladmin/api/application/servers",
  135.         headers: {
  136.           "Accept": "Application/vnd.pterodactyl.v1+json",
  137.           "Authorization": "Bearer $_apiadmin"
  138.         },
  139.       );
  140.  
  141.       if (response.statusCode == 401) {
  142.         // Todo fix Navigation context for logging out if key isn't available
  143.         SharedPreferencesHelper.remove('apiAdminKey');
  144.         Navigator.of(context).pushNamedAndRemoveUntil(
  145.             '/selecthost', (Route<dynamic> route) => false);
  146.         return false;
  147.       } else {
  148.         return true;
  149.       }
  150.     } else {
  151.       String _apikey = await SharedPreferencesHelper.getString("apiKey");
  152.       String _https = await SharedPreferencesHelper.getString("https");
  153.       String _url = await SharedPreferencesHelper.getString("panelUrl");
  154.  
  155.       if (_url.isEmpty) {
  156.         SharedPreferencesHelper.remove('apiKey');
  157.         Navigator.of(context)
  158.             .pushNamedAndRemoveUntil('/selecthost', (Route<dynamic> route) => false);
  159.         return false;
  160.       }
  161.  
  162.       http.Response response = await http.get(
  163.         "$_https$_url/api/client",
  164.         headers: {
  165.           "Accept": "Application/vnd.pterodactyl.v1+json",
  166.           "Authorization": "Bearer $_apikey"
  167.         },
  168.       );
  169.  
  170.       print(response.statusCode);
  171.  
  172.       if (response.statusCode == 401) {
  173.         // Todo fix Navigation context for logging out if key isn't available
  174.         SharedPreferencesHelper.remove('apiKey');
  175.         Navigator.of(context)
  176.             .pushNamedAndRemoveUntil('/selecthost', (Route<dynamic> route) => false);
  177.         return false;
  178.       } else {
  179.         return true;
  180.       }
  181.     }
  182.   }
  183.  
  184.   @override
  185.   void initState() {
  186.     super.initState();
  187.     checkFirstSeen();
  188.     checkDeploysSeen();
  189.     checkLoginSeen();
  190.     admincheckFirstSeen();
  191.   }
  192.  
  193.   @override
  194.   Widget build(BuildContext context) {
  195.     this.context = context;
  196.     return new Scaffold(
  197.       body: new Center(
  198.         child: new Text('Loading...'),
  199.       ),
  200.     );
  201.   }
  202. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement