reset password
This commit is contained in:
@ -3,7 +3,7 @@ package admin
|
|||||||
import (
|
import (
|
||||||
"github.com/revel/revel"
|
"github.com/revel/revel"
|
||||||
. "github.com/leanote/leanote/app/lea"
|
. "github.com/leanote/leanote/app/lea"
|
||||||
"time"
|
// "time"
|
||||||
"github.com/leanote/leanote/app/info"
|
"github.com/leanote/leanote/app/info"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -50,16 +50,17 @@ func (c AdminUser) Register(email, pwd string) revel.Result {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 修改帐户
|
// 修改帐户
|
||||||
func (c AdminUser) UpdateAccount(userId string) revel.Result {
|
func (c AdminUser) ResetPwd(userId string) revel.Result {
|
||||||
userInfo := userService.GetUserInfo(userId)
|
userInfo := userService.GetUserInfo(userId)
|
||||||
c.RenderArgs["userInfo"] = userInfo
|
c.RenderArgs["userInfo"] = userInfo
|
||||||
return c.RenderTemplate("admin/user/update_account.html");
|
return c.RenderTemplate("admin/user/reset_pwd.html");
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c AdminUser) DoUpdateAccount(userId, accountType string, accountStartTime, accountEndTime string, maxImageNum, maxImageSize, maxAttachNum, maxAttachSize, maxPerAttachSize int) revel.Result {
|
func (c AdminUser) DoResetPwd(userId, pwd string) revel.Result {
|
||||||
re := info.NewRe();
|
re := info.NewRe();
|
||||||
s, _ := time.Parse("2006-01-02 15:04:02", accountStartTime)
|
if re.Ok, re.Msg = Vd("password", pwd); !re.Ok {
|
||||||
e, _ := time.Parse("2006-01-02 15:04:02", accountEndTime)
|
return c.RenderRe(re);
|
||||||
re.Ok = userService.UpdateAccount(userId, accountType, s, e, maxImageNum, maxImageSize, maxAttachNum, maxAttachSize, maxPerAttachSize )
|
}
|
||||||
|
re.Ok, re.Msg = userService.ResetPwd(c.GetUserId(), userId, pwd)
|
||||||
return c.RenderRe(re)
|
return c.RenderRe(re)
|
||||||
}
|
}
|
@ -254,26 +254,22 @@ func (this *UserService) UpdatePwd(userId, oldPwd, pwd string) (bool, string) {
|
|||||||
return ok, ""
|
return ok, ""
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 管理员重置密码
|
||||||
|
func (this *UserService) ResetPwd(adminUserId, userId, pwd string) (ok bool, msg string) {
|
||||||
|
adminInfo := this.GetUserInfoByAny(adminUsername)
|
||||||
|
if adminInfo.UserId.Hex() != adminUserId {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
ok = db.UpdateByQField(db.Users, bson.M{"_id": bson.ObjectIdHex(userId)}, "Pwd", Md5(pwd))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
// 修改主题
|
// 修改主题
|
||||||
func (this *UserService) UpdateTheme(userId, theme string) (bool) {
|
func (this *UserService) UpdateTheme(userId, theme string) (bool) {
|
||||||
ok := db.UpdateByQField(db.Users, bson.M{"_id": bson.ObjectIdHex(userId)}, "Theme", theme)
|
ok := db.UpdateByQField(db.Users, bson.M{"_id": bson.ObjectIdHex(userId)}, "Theme", theme)
|
||||||
return ok
|
return ok
|
||||||
}
|
}
|
||||||
|
|
||||||
// 帐户类型设置
|
|
||||||
func (this *UserService) UpdateAccount(userId, accountType string, accountStartTime, accountEndTime time.Time,
|
|
||||||
maxImageNum, maxImageSize, maxAttachNum, maxAttachSize, maxPerAttachSize int) bool {
|
|
||||||
return db.UpdateByQI(db.Users, bson.M{"_id": bson.ObjectIdHex(userId)}, info.UserAccount{
|
|
||||||
AccountType: accountType,
|
|
||||||
AccountStartTime: accountStartTime,
|
|
||||||
AccountEndTime: accountEndTime,
|
|
||||||
MaxImageNum: maxImageNum,
|
|
||||||
MaxImageSize: maxImageSize,
|
|
||||||
MaxAttachNum: maxAttachNum,
|
|
||||||
MaxAttachSize: maxAttachSize,
|
|
||||||
MaxPerAttachSize: maxPerAttachSize,
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
//---------------
|
//---------------
|
||||||
// 修改email
|
// 修改email
|
||||||
@ -366,7 +362,11 @@ func (this *UserService) ListUsers(pageNumber, pageSize int, sortField string, i
|
|||||||
skipNum, sortFieldR := parsePageAndSort(pageNumber, pageSize, sortField, isAsc)
|
skipNum, sortFieldR := parsePageAndSort(pageNumber, pageSize, sortField, isAsc)
|
||||||
query := bson.M{}
|
query := bson.M{}
|
||||||
if email != "" {
|
if email != "" {
|
||||||
query["Email"] = bson.M{"$regex": bson.RegEx{".*?" + email + ".*", "i"}}
|
orQ := []bson.M{
|
||||||
|
bson.M{"Email": bson.M{"$regex": bson.RegEx{".*?" + email + ".*", "i"}}},
|
||||||
|
bson.M{"Username": bson.M{"$regex": bson.RegEx{".*?" + email + ".*", "i"}}},
|
||||||
|
}
|
||||||
|
query["$or"] = orQ
|
||||||
}
|
}
|
||||||
q := db.Users.Find(query);
|
q := db.Users.Find(query);
|
||||||
// 总记录数
|
// 总记录数
|
||||||
|
@ -42,7 +42,7 @@ $(function() {
|
|||||||
var t = this;
|
var t = this;
|
||||||
if($("#add_user_form").valid()) {
|
if($("#add_user_form").valid()) {
|
||||||
$(t).button('loading');
|
$(t).button('loading');
|
||||||
ajaxPost("/auth/doRegister", getFormJsonData("add_user_form"), function(ret){
|
ajaxPost("/adminUser/register", getFormJsonData("add_user_form"), function(ret){
|
||||||
$(t).button('reset')
|
$(t).button('reset')
|
||||||
if(!ret.Ok) {
|
if(!ret.Ok) {
|
||||||
art.alert(ret.Msg);
|
art.alert(ret.Msg);
|
||||||
|
@ -4,16 +4,8 @@
|
|||||||
<section class="panel panel-default">
|
<section class="panel panel-default">
|
||||||
<div class="row wrapper">
|
<div class="row wrapper">
|
||||||
<div class="col-sm-5 m-b-xs">
|
<div class="col-sm-5 m-b-xs">
|
||||||
<select class="input-sm form-control input-s-sm inline v-middle">
|
<button class="btn btn-sm btn-default bulk-email">
|
||||||
<option value="">
|
|
||||||
Bulk action
|
|
||||||
</option>
|
|
||||||
<option value="1">
|
|
||||||
Send Email
|
Send Email
|
||||||
</option>
|
|
||||||
</select>
|
|
||||||
<button class="btn btn-sm btn-default bulk-btn">
|
|
||||||
Apply
|
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-sm-4 m-b-xs">
|
<div class="col-sm-4 m-b-xs">
|
||||||
@ -21,7 +13,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="col-sm-3">
|
<div class="col-sm-3">
|
||||||
<div class="input-group search-group">
|
<div class="input-group search-group">
|
||||||
<input type="text" class="input-sm form-control" placeholder="Email" id="keywords" value="{{.keywords}}" />
|
<input type="text" class="input-sm form-control" placeholder="Username or Email" id="keywords" value="{{.keywords}}" />
|
||||||
<span class="input-group-btn">
|
<span class="input-group-btn">
|
||||||
<button class="btn btn-sm btn-default" type="button" data-url="/adminUser/index">Search</button>
|
<button class="btn btn-sm btn-default" type="button" data-url="/adminUser/index">Search</button>
|
||||||
</span>
|
</span>
|
||||||
@ -99,7 +91,8 @@
|
|||||||
{{.CreatedTime|datetime}}
|
{{.CreatedTime|datetime}}
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<a href="#" class="btn btn-default send-email" data-email="{{.Email}}">Send Email</a>
|
<a href="#" class="btn btn-sm btn-default reset-pwd" data-id="{{.UserId.Hex}}">Reset Password</a>
|
||||||
|
<a href="#" class="btn btn-sm btn-default send-email" data-email="{{.Email}}">Send Email</a>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
{{end}}
|
{{end}}
|
||||||
@ -109,16 +102,8 @@
|
|||||||
<footer class="panel-footer">
|
<footer class="panel-footer">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-sm-4 hidden-xs">
|
<div class="col-sm-4 hidden-xs">
|
||||||
<select class="input-sm form-control input-s-sm inline v-middle">
|
<button class="btn btn-sm btn-default bulk-email">
|
||||||
<option value="">
|
|
||||||
Bulk action
|
|
||||||
</option>
|
|
||||||
<option value="1">
|
|
||||||
Send Email
|
Send Email
|
||||||
</option>
|
|
||||||
</select>
|
|
||||||
<button class="btn btn-sm btn-default bulk-btn">
|
|
||||||
Apply
|
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -137,9 +122,7 @@ $(function() {
|
|||||||
$(".send-email").click(function() {
|
$(".send-email").click(function() {
|
||||||
openSendEmailDialog($(this).data("email"));
|
openSendEmailDialog($(this).data("email"));
|
||||||
});
|
});
|
||||||
$(".bulk-btn").click(function() {
|
$(".bulk-email").click(function() {
|
||||||
// email
|
|
||||||
if($(this).prev().val() == "1") {
|
|
||||||
var emails = [];
|
var emails = [];
|
||||||
$(".ck:checked").each(function() {
|
$(".ck:checked").each(function() {
|
||||||
emails.push($(this).data("email"));
|
emails.push($(this).data("email"));
|
||||||
@ -149,7 +132,12 @@ $(function() {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
openSendEmailDialog(emails.join(","));
|
openSendEmailDialog(emails.join(","));
|
||||||
}
|
});
|
||||||
|
|
||||||
|
// reset password
|
||||||
|
$(".reset-pwd").click(function() {
|
||||||
|
var id = $(this).data("id");
|
||||||
|
openDialog({width: 500, url: "/adminUser/resetPwd?userId=" + id, title: "Reset Password"});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
52
app/views/admin/user/reset_pwd.html
Normal file
52
app/views/admin/user/reset_pwd.html
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
<div class="row" style="width: 500px;">
|
||||||
|
<div class="col-sm-12">
|
||||||
|
<form id="dataForm">
|
||||||
|
<section class="panel panel-default">
|
||||||
|
<header class="panel-heading font-bold">Email</header>
|
||||||
|
<div class="panel-body">
|
||||||
|
<div class="form-group pull-in clearfix">
|
||||||
|
<div class="col-sm-12">
|
||||||
|
<label>New password</label>
|
||||||
|
<input id="pwd" type="password" class="form-control" data-rule-required="true" id="pwd" name="pwd" data-rule-minlength="6">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group pull-in clearfix">
|
||||||
|
<div class="col-sm-12">
|
||||||
|
<label>Confirm password</label>
|
||||||
|
<input type="password" class="form-control parsley-validated" data-rule-equalto="#pwd" data-rule-required="true" name="password2">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<footer class="panel-footer text-right bg-light lter">
|
||||||
|
<button type="submit" id="resetPwdBtn" class="btn btn-success btn-s-xs">Submit</button>
|
||||||
|
</footer>
|
||||||
|
</section>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script src="/public/admin/js/jquery-validation-1.13.0/jquery.validate.js"></script>
|
||||||
|
<script>
|
||||||
|
$(function() {
|
||||||
|
var userId = "{{.userInfo.UserId.Hex}}";
|
||||||
|
init_validator("#dataForm");
|
||||||
|
$("#resetPwdBtn").click(function(e){
|
||||||
|
e.preventDefault();
|
||||||
|
var t = this;
|
||||||
|
if($("#dataForm").valid()) {
|
||||||
|
$(t).button('loading');
|
||||||
|
ajaxPost("/adminUser/doResetPwd", {userId: userId, pwd: $("#pwd").val()}, function(ret){
|
||||||
|
$(t).button('reset')
|
||||||
|
if(!ret.Ok) {
|
||||||
|
art.alert(ret.Msg);
|
||||||
|
} else {
|
||||||
|
art.tips("Success");
|
||||||
|
closeDialog();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
Reference in New Issue
Block a user