Browse Source

First user page

Vova Tkach 6 years ago
parent
commit
8ff6beba2b

+ 9 - 4
engine/backend/backend.go

@@ -19,10 +19,15 @@ func New(wrapper *wrapper.Wrapper, db *sql.DB) *Backend {
 }
 
 func (this *Backend) Run() bool {
-	// TODO:
-	// Check if any user exists
-	// If not - display form to create first user
-	// DO NOT FORGET!
+	// Show add user form if no any user in db
+	var count int
+	err := this.db.QueryRow("SELECT COUNT(*) FROM `users`;").Scan(&count)
+	if this.wrapper.EngineErrMsgOnError(err) {
+		return true
+	}
+	if count <= 0 {
+		return this.wrapper.TmplBackEnd(templates.CpFirstUser, nil)
+	}
 
 	// Login page
 	return this.wrapper.TmplBackEnd(templates.CpLogin, nil)

+ 10 - 5
engine/wrapper/resources/styles/assets.cp.styles.css

@@ -5,7 +5,8 @@ body.no-scroll {
 
 /* Login/MySQL form */
 body.cp-login,
-body.cp-mysql {
+body.cp-mysql,
+body.cp-first-user {
 	height: 100%;
 	display: -ms-flexbox;
 	display: -webkit-box;
@@ -23,7 +24,8 @@ body.cp-mysql {
 }
 
 .cp-login .form-signin,
-.cp-mysql .form-signin {
+.cp-mysql .form-signin,
+.cp-first-user .form-signin {
 	width: 100%;
 	max-width: 330px;
 	padding: 15px;
@@ -31,12 +33,14 @@ body.cp-mysql {
 }
 
 .cp-login .form-signin label,
-.cp-mysql .form-signin label {
+.cp-mysql .form-signin label,
+.cp-first-user .form-signin label {
 	cursor: pointer;
 }
 
 .cp-login .form-signin .form-control,
-.cp-mysql .form-signin .form-control {
+.cp-mysql .form-signin .form-control,
+.cp-first-user .form-signin .form-control {
 	position: relative;
 	box-sizing: border-box;
 	height: auto;
@@ -45,7 +49,8 @@ body.cp-mysql {
 }
 
 .cp-login .form-signin .form-control:focus,
-.cp-mysql .form-signin .form-control:focus {
+.cp-mysql .form-signin .form-control:focus,
+.cp-first-user .form-signin .form-control:focus {
 	z-index: 2;
 }
 

+ 1 - 1
engine/wrapper/resources/styles/assets.cp.styles.css.go

@@ -1,4 +1,4 @@
 package styles
 
 // https://csscompressor.com/
-var File_assets_cp_styles_css = []byte(`body.no-scroll{padding-right:0!important}body.cp-login,body.cp-mysql{height:100%;display:-ms-flexbox;display:-webkit-box;display:flex;-ms-flex-align:center;-ms-flex-pack:center;-webkit-box-align:center;align-items:center;-webkit-box-pack:center;justify-content:center;padding-top:40px;padding-bottom:40px;background-color:#f5f5f5;background:#205081 url(/assets/sys/bg.png) repeat 0 0}.cp-login .form-signin,.cp-mysql .form-signin{width:100%;max-width:330px;padding:15px;margin:0 auto}.cp-login .form-signin label,.cp-mysql .form-signin label{cursor:pointer}.cp-login .form-signin .form-control,.cp-mysql .form-signin .form-control{position:relative;box-sizing:border-box;height:auto;padding:10px;font-size:16px}.cp-login .form-signin .form-control:focus,.cp-mysql .form-signin .form-control:focus{z-index:2}.cp-login .form-signin input[type="email"]{margin-bottom:-1px;border-bottom-right-radius:0;border-bottom-left-radius:0}.cp-login .form-signin input[type="password"]{margin-bottom:10px;border-top-left-radius:0;border-top-right-radius:0}`)
+var File_assets_cp_styles_css = []byte(`body.no-scroll{padding-right:0!important}body.cp-login,body.cp-mysql,body.cp-first-user{height:100%;display:-ms-flexbox;display:-webkit-box;display:flex;-ms-flex-align:center;-ms-flex-pack:center;-webkit-box-align:center;align-items:center;-webkit-box-pack:center;justify-content:center;padding-top:40px;padding-bottom:40px;background-color:#f5f5f5;background:#205081 url(/assets/sys/bg.png) repeat 0 0}.cp-login .form-signin,.cp-mysql .form-signin,.cp-first-user .form-signin{width:100%;max-width:330px;padding:15px;margin:0 auto}.cp-login .form-signin label,.cp-mysql .form-signin label,.cp-first-user .form-signin label{cursor:pointer}.cp-login .form-signin .form-control,.cp-mysql .form-signin .form-control,.cp-first-user .form-signin .form-control{position:relative;box-sizing:border-box;height:auto;padding:10px;font-size:16px}.cp-login .form-signin .form-control:focus,.cp-mysql .form-signin .form-control:focus,.cp-first-user .form-signin .form-control:focus{z-index:2}.cp-login .form-signin input[type="email"]{margin-bottom:-1px;border-bottom-right-radius:0;border-bottom-left-radius:0}.cp-login .form-signin input[type="password"]{margin-bottom:10px;border-top-left-radius:0;border-top-right-radius:0}`)

+ 3 - 0
engine/wrapper/resources/templates/cp.firstuser.go

@@ -0,0 +1,3 @@
+package templates
+
+var CpFirstUser = []byte(`<!doctype html><html lang="en"><head><meta charset="utf-8"><meta name="theme-color" content="#205081" /><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><title>Creating first user</title><link rel="stylesheet" href="{{$.System.PathCssBootstrap}}"><link rel="stylesheet" href="{{$.System.PathCssCpStyles}}"><link rel="shortcut icon" href="{{$.System.PathIcoFav}}" type="image/x-icon" /><style type="text/css">html{height:100%;}</style></head><body class="cp-first-user text-center">{{$.System.BlockModalSysMsg}}<form class="form-signin card" action="/cp/" method="post"><input type="hidden" name="action" value="first_user"><h1 class="h3 mb-3 font-weight-normal">Creating first user</h1><label for="first_name" class="sr-only">User first name</label><input type="text" id="first_name" name="first_name" class="form-control mb-3" placeholder="User first name"><label for="last_name" class="sr-only">User last name</label><input type="text" id="last_name" name="last_name" class="form-control mb-3" placeholder="User last name"><label for="email" class="sr-only">User email</label><input type="email" id="email" name="email" class="form-control mb-3" placeholder="User email" required><label for="password" class="sr-only">User password</label><input type="password" id="password" name="password" class="form-control mb-3" placeholder="User password" required><button class="btn btn-lg btn-primary btn-block" type="submit">Create</button></form><script src="{{$.System.PathJsJquery}}"></script><script src="{{$.System.PathJsPopper}}"></script><script src="{{$.System.PathJsBootstrap}}"></script><script src="{{$.System.PathJsCpScripts}}"></script></body></html>`)

+ 33 - 0
engine/wrapper/resources/templates/cp.firstuser.html

@@ -0,0 +1,33 @@
+<!doctype html>
+<html lang="en">
+	<head>
+		<meta charset="utf-8">
+		<meta name="theme-color" content="#205081" />
+		<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
+		<title>Creating first user</title>
+		<link rel="stylesheet" href="{{$.System.PathCssBootstrap}}">
+		<link rel="stylesheet" href="{{$.System.PathCssCpStyles}}">
+		<link rel="shortcut icon" href="{{$.System.PathIcoFav}}" type="image/x-icon" />
+		<style type="text/css">html{height:100%;}</style>
+	</head>
+	<body class="cp-first-user text-center">
+		{{$.System.BlockModalSysMsg}}
+		<form class="form-signin card" action="/cp/" method="post">
+			<input type="hidden" name="action" value="first_user">
+			<h1 class="h3 mb-3 font-weight-normal">Creating first user</h1>
+			<label for="first_name" class="sr-only">User first name</label>
+			<input type="text" id="first_name" name="first_name" class="form-control mb-3" placeholder="User first name">
+			<label for="last_name" class="sr-only">User last name</label>
+			<input type="text" id="last_name" name="last_name" class="form-control mb-3" placeholder="User last name">
+			<label for="email" class="sr-only">User email</label>
+			<input type="email" id="email" name="email" class="form-control mb-3" placeholder="User email" required>
+			<label for="password" class="sr-only">User password</label>
+			<input type="password" id="password" name="password" class="form-control mb-3" placeholder="User password" required>
+			<button class="btn btn-lg btn-primary btn-block" type="submit">Create</button>
+		</form>
+		<script src="{{$.System.PathJsJquery}}"></script>
+		<script src="{{$.System.PathJsPopper}}"></script>
+		<script src="{{$.System.PathJsBootstrap}}"></script>
+		<script src="{{$.System.PathJsCpScripts}}"></script>
+	</body>
+</html>