Skip to content

Commit 2f7bf4d

Browse files
committed
feat: integrated password generator with UI
1 parent 94784ab commit 2f7bf4d

File tree

5 files changed

+40
-50
lines changed

5 files changed

+40
-50
lines changed

go-web/controllers/default.go

Lines changed: 24 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,50 +1,41 @@
11
package controllers
22

33
import (
4-
"fmt"
5-
64
beego "github.com/beego/beego/v2/server/web"
5+
models "github.com/flarexes/offsync/go-web/models"
76
)
87

9-
type MainController struct {
10-
beego.Controller
11-
}
12-
13-
func (c *MainController) Get() {
14-
c.Data["Website"] = "beego.vip"
15-
c.Data["Email"] = "astaxie@gmail.com"
16-
c.TplName = "index.tpl"
17-
}
18-
198
type OffsyncController struct {
209
beego.Controller
2110
}
2211

2312
func (c *OffsyncController) Get() {
24-
c.Data["Site"] = "GitHub"
25-
c.Data["Username"] = "FlareXes"
2613
c.TplName = "index.tpl"
2714
}
2815

29-
type Profile struct {
30-
Site string `form:"site"`
31-
Username string `form:"username"`
32-
Length string `form:"length"`
33-
Counter string `form:"counter"`
34-
}
35-
3616
func (c *OffsyncController) Post() {
37-
site := c.GetString("site")
38-
username := c.GetString("username")
39-
length := c.GetString("length")
40-
counter := c.GetString("counter")
41-
// c.TplName = "submit.html"
42-
c.Ctx.Redirect(302, "/")
43-
44-
if site == "" || username == "" || length == "" || counter == "" {
45-
fmt.Println("Missing form fields!")
46-
} else {
47-
fmt.Println(site, username, length, counter)
17+
var profile models.Profile
18+
c.TplName = "index.tpl"
19+
20+
if err := c.ParseForm(&profile); err != nil {
21+
c.Ctx.WriteString("Error binding form data: " + err.Error())
22+
return
4823
}
49-
fmt.Println(site, username, length, counter)
24+
25+
password := models.GeneratePassword(profile)
26+
27+
c.Data["Answer"] = password
28+
29+
// c.SetSession("password", password)
30+
31+
c.SetSession("username", "john_doe")
32+
c.SetSession("logged_in", true)
33+
c.Ctx.WriteString("Session set!")
34+
35+
// TODO
36+
// if site == "" || username == "" || length == "" || counter == "" {
37+
// fmt.Println("Missing form fields!")
38+
// }
39+
// c.Ctx.Redirect(302, "/")
40+
// c.Redirect("/", 302)
5041
}

go-web/go-web

-116 Bytes
Binary file not shown.

go-web/go.mod

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,10 @@ module github.com/flarexes/offsync/go-web
22

33
go 1.23
44

5-
require github.com/beego/beego/v2 v2.1.0
5+
require (
6+
github.com/beego/beego/v2 v2.1.0
7+
golang.org/x/crypto v0.0.0-20220315160706-3147a52a75dd
8+
)
69

710
require (
811
github.com/beorn7/perks v1.0.1 // indirect
@@ -18,7 +21,6 @@ require (
1821
github.com/prometheus/common v0.42.0 // indirect
1922
github.com/prometheus/procfs v0.9.0 // indirect
2023
github.com/shiena/ansicolor v0.0.0-20200904210342-c7312218db18 // indirect
21-
golang.org/x/crypto v0.0.0-20220315160706-3147a52a75dd // indirect
2224
golang.org/x/net v0.7.0 // indirect
2325
golang.org/x/sys v0.6.0 // indirect
2426
golang.org/x/text v0.7.0 // indirect

go-web/views/index.tpl

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -118,15 +118,19 @@
118118
<button id="themeToggle" class="theme-toggle" aria-label="Toggle dark mode">🌓</button>
119119

120120
<div class="container">
121-
<h2>Password Generator</h2>
121+
<h2>Stateless: {{.Answer}}</h2>
122122
<form id="passwordForm" method="post" action="/submit">
123123
<div class="form-group">
124124
<label for="site">Site</label>
125-
<input type="text" id="site" name="site" placeholder="Enter site name" value="{{.Site}}" required>
125+
<input type="text" id="site" name="site" placeholder="Enter site name" required>
126126
</div>
127127
<div class="form-group">
128128
<label for="username">Username</label>
129-
<input type="text" id="username" name="username" placeholder="Enter username" value="{{.Username}}" required>
129+
<input type="text" id="username" name="username" placeholder="Enter username" required>
130+
</div>
131+
<div class="form-group">
132+
<label for="secret">Secret</label>
133+
<input type="text" id="secret" name="secret" placeholder="Enter secret" required>
130134
</div>
131135
<div class="row">
132136
<div class="col">
@@ -138,14 +142,15 @@
138142
<div class="col">
139143
<div class="form-group">
140144
<label for="counter">Counter</label>
141-
<input type="number" id="counter" name="counter" value="1" placeholder="Counter" min="1" required>
145+
<input type="number" id="counter" name="counter" value="1" placeholder="Counter" min="1"
146+
required>
142147
</div>
143148
</div>
144149
</div>
145150
<button type="submit" id="generateButton">Generate & Copy</button>
146151
</form>
147152
</div>
148-
<!--
153+
149154
<script>
150155
document.addEventListener('DOMContentLoaded', function () {
151156
const themeToggle = document.getElementById('themeToggle');
@@ -164,15 +169,8 @@
164169
});
165170

166171
generateButton.addEventListener('click', function () {
167-
const site = document.getElementById('site').value;
168-
const username = document.getElementById('username').value;
169-
const length = document.getElementById('length').value;
170-
const counter = document.getElementById('counter').value;
171-
172-
// This is a placeholder for the actual password generation logic
173-
const generatedPassword = `${site}-${username}-${length}-${counter}`;
172+
const generatedPassword = "{{.Answer}}";
174173

175-
// Copy to clipboard
176174
navigator.clipboard.writeText(generatedPassword).then(function () {
177175
alert('Password generated and copied to clipboard!');
178176
}, function (err) {
@@ -188,7 +186,7 @@
188186
setTheme(true);
189187
}
190188
});
191-
</script> -->
189+
</script>
192190
</body>
193191

194192
</html>

go-web/views/submit.html

Lines changed: 0 additions & 1 deletion
This file was deleted.

0 commit comments

Comments
 (0)