/
users.go
136 lines (113 loc) · 3.45 KB
/
users.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
package viewmodels
import (
"github.com/apexskier/httpauth"
"html/template"
)
// UsersEditViewModel holds the required information about the site to choose for editing.
type UsersEditViewModel struct {
Username string `valid:"alphanum,required"`
Email string `valid:"email,required"`
Role string `valid:"-"`
Password string `valid:"-"`
Password2 string `valid:"-"`
}
// UsersViewModel holds the view information for the users.gohtml template
type UsersViewModel struct {
Error error
Title string
Users []UsersEditViewModel
Nav NavViewModel
}
// UserViewModel holds the view information for the user_edit.gohtml template
type UserViewModel struct {
Errors map[string]string
Title string
User UsersEditViewModel
Nav NavViewModel
Roles map[string]httpauth.Role
CsrfField template.HTML
}
// GetUsersViewModel populates the items required by the settings.gohtml view
func GetUsersViewModel(users []httpauth.UserData, isAuthenticated bool, user httpauth.UserData, err error) UsersViewModel {
nav := NavViewModel{
Active: "settings",
IsAuthenticated: isAuthenticated,
User: user,
}
result := UsersViewModel{
Title: "Go Ping Sites - Settings - Users",
Nav: nav,
}
for _, user := range users {
userVM := new(UsersEditViewModel)
userVM.Username = user.Username
userVM.Email = user.Email
userVM.Role = user.Role
result.Users = append(result.Users, *userVM)
}
return result
}
// EditUserViewModel populates the items required by the user_edit.gohtml view
func EditUserViewModel(formUser *UsersEditViewModel, roles map[string]httpauth.Role,
isAuthenticated bool, user httpauth.UserData, errors map[string]string) UserViewModel {
nav := NavViewModel{
Active: "settings",
IsAuthenticated: isAuthenticated,
User: user,
}
result := UserViewModel{
Title: "Go Ping Sites - Settings - Edit User",
Nav: nav,
Roles: roles,
Errors: errors,
}
userVM := new(UsersEditViewModel)
userVM.Username = formUser.Username
userVM.Email = formUser.Email
userVM.Role = formUser.Role
result.User = *userVM
return result
}
// NewUserViewModel populates the items required by the user_new.gohtml view
func NewUserViewModel(formUser *UsersEditViewModel, roles map[string]httpauth.Role,
isAuthenticated bool, user httpauth.UserData, errors map[string]string) UserViewModel {
nav := NavViewModel{
Active: "settings",
IsAuthenticated: isAuthenticated,
User: user,
}
result := UserViewModel{
Title: "Go Ping Sites - Settings - New User",
Nav: nav,
Roles: roles,
Errors: errors,
}
userVM := new(UsersEditViewModel)
userVM.Username = formUser.Username
userVM.Email = formUser.Email
userVM.Role = formUser.Role
userVM.Password = formUser.Password
userVM.Password2 = formUser.Password2
result.User = *userVM
return result
}
// DeleteUserViewModel populates the items required by the user_delete.gohtml view
func DeleteUserViewModel(formUser *UsersEditViewModel, isAuthenticated bool,
user httpauth.UserData, errors map[string]string) UserViewModel {
nav := NavViewModel{
Active: "settings",
IsAuthenticated: isAuthenticated,
User: user,
}
result := UserViewModel{
Title: "Go Ping Sites - Settings - Delete User",
Nav: nav,
Errors: errors,
}
userVM := new(UsersEditViewModel)
userVM.Username = formUser.Username
userVM.Email = formUser.Email
userVM.Role = formUser.Role
result.User = *userVM
return result
}