From 844089917accea473fcb2e39529a2ac6e2f9de3e Mon Sep 17 00:00:00 2001 From: Vishesh Handa Date: Wed, 19 Feb 2020 18:02:53 +0100 Subject: [PATCH] KeyEditors: Add basic validation --- lib/setup/key_editors.dart | 74 ++++++++++++++++++++++++++++++++++++++ lib/setup/sshkey.dart | 35 +++--------------- 2 files changed, 78 insertions(+), 31 deletions(-) create mode 100644 lib/setup/key_editors.dart diff --git a/lib/setup/key_editors.dart b/lib/setup/key_editors.dart new file mode 100644 index 00000000..cadd417f --- /dev/null +++ b/lib/setup/key_editors.dart @@ -0,0 +1,74 @@ +import 'package:flutter/material.dart'; + +class PublicKeyEditor extends StatelessWidget { + final TextEditingController controller; + + PublicKeyEditor(this.controller); + + @override + Widget build(BuildContext context) { + return SizedBox( + width: double.infinity, + height: 80.0, + child: Container( + color: Theme.of(context).buttonColor, + child: SingleChildScrollView( + child: Container( + padding: const EdgeInsets.all(8.0), + child: TextFormField( + controller: controller, + textAlign: TextAlign.left, + maxLines: null, + style: Theme.of(context).textTheme.body1, + autovalidate: true, + validator: (String val) { + if (!val.startsWith("ssh-")) { + return "Invalid Public Key"; + } + return ""; + }, + ), + ), + ), + ), + ); + } +} + +class PrivateKeyEditor extends StatelessWidget { + final TextEditingController controller; + + PrivateKeyEditor(this.controller); + + @override + Widget build(BuildContext context) { + return SizedBox( + width: double.infinity, + height: 80.0, + child: Container( + color: Theme.of(context).buttonColor, + child: SingleChildScrollView( + child: Container( + padding: const EdgeInsets.all(8.0), + child: TextFormField( + controller: controller, + textAlign: TextAlign.left, + maxLines: null, + style: Theme.of(context).textTheme.body1, + autovalidate: true, + validator: (String val) { + if (!val.startsWith("-----BEGIN RSA PRIVATE KEY-----")) { + return "Invalid Private Key"; + } + if (!val.startsWith("-----END RSA PRIVATE KEY-----")) { + return "Invalid Private Key"; + } + return ""; + }, + ), + ), + ), + ), + ); + } +} diff --git a/lib/setup/sshkey.dart b/lib/setup/sshkey.dart index 7efdf134..28e92cbe 100644 --- a/lib/setup/sshkey.dart +++ b/lib/setup/sshkey.dart @@ -3,6 +3,7 @@ import 'package:function_types/function_types.dart'; import 'button.dart'; import 'loading.dart'; +import 'key_editors.dart'; class GitHostSetupSshKeyKnownProvider extends StatelessWidget { final Func0 doneFunction; @@ -219,13 +220,14 @@ class _GitHostUserProvidedKeysState extends State { style: Theme.of(context).textTheme.headline, ), const SizedBox(height: 8.0), - KeyEditor(_publicKeyController), + PublicKeyEditor(_publicKeyController), const SizedBox(height: 8.0), Text( "Private Key -", style: Theme.of(context).textTheme.headline, ), - KeyEditor(_privateKeyController), + const SizedBox(height: 8.0), + PrivateKeyEditor(_privateKeyController), const SizedBox(height: 16.0), GitHostSetupButton( text: "Next", @@ -243,35 +245,6 @@ class _GitHostUserProvidedKeysState extends State { } } -// FIXME: vHanda: Add validation -class KeyEditor extends StatelessWidget { - final TextEditingController controller; - - KeyEditor(this.controller); - - @override - Widget build(BuildContext context) { - return SizedBox( - width: double.infinity, - height: 80.0, - child: Container( - color: Theme.of(context).buttonColor, - child: SingleChildScrollView( - child: Container( - padding: const EdgeInsets.all(8.0), - child: TextField( - controller: controller, - textAlign: TextAlign.left, - maxLines: null, - style: Theme.of(context).textTheme.body1, - ), - ), - ), - ), - ); - } -} - class PublicKeyWidget extends StatelessWidget { final String publicKey;