增加功能:增加MongoDB数据库支持 #IS7V2
This commit is contained in:
parent
642b74edfc
commit
20a9ba8da7
|
@ -58,6 +58,6 @@ namespace Bootstrap.Admin.Controllers.Api
|
|||
/// <param name="user"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPut]
|
||||
public bool Put([FromBody]ResetUser user) => UserHelper.ForgotPassword(user.UserName, user.DisplayName, user.Reason);
|
||||
public bool Put([FromBody]ResetUser user) => UserHelper.ForgotPassword(user);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -127,6 +127,17 @@ namespace Bootstrap.DataAccess.MongoDB
|
|||
return DBAccess.GetCollection<DataAccess.LoginUser>("LoginLogs");
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public static IMongoCollection<DataAccess.ResetUser> ResetUsers
|
||||
{
|
||||
get
|
||||
{
|
||||
return DBAccess.GetCollection<DataAccess.ResetUser>("ResetUsers");
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
private static void InitDb()
|
||||
|
@ -240,6 +251,15 @@ namespace Bootstrap.DataAccess.MongoDB
|
|||
md.IdMemberMap.SetIgnoreIfDefault(true);
|
||||
});
|
||||
}
|
||||
if (!BsonClassMap.IsClassMapRegistered(typeof(DataAccess.ResetUser)))
|
||||
{
|
||||
BsonClassMap.RegisterClassMap<DataAccess.ResetUser>(md =>
|
||||
{
|
||||
md.AutoMap();
|
||||
md.IdMemberMap.SetSerializer(new StringSerializer(BsonType.ObjectId));
|
||||
md.IdMemberMap.SetIgnoreIfDefault(true);
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,33 @@
|
|||
using MongoDB.Driver;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
namespace Bootstrap.DataAccess.MongoDB
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public class ResetUser : DataAccess.ResetUser
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="userName"></param>
|
||||
/// <returns></returns>
|
||||
public override DataAccess.ResetUser RetrieveUserByUserName(string userName) => DbManager.ResetUsers.Find(user => user.UserName.ToLowerInvariant() == userName.ToLowerInvariant()).FirstOrDefault();
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="userName"></param>
|
||||
/// <returns></returns>
|
||||
public override IEnumerable<KeyValuePair<DateTime, string>> RetrieveResetReasonsByUserName(string userName) => DbManager.ResetUsers.Find(user => user.UserName.ToLowerInvariant() == userName.ToLowerInvariant()).ToList().OrderByDescending(user => user.ResetTime).Select(user => new KeyValuePair<DateTime, string>(user.ResetTime, user.Reason));
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="userName"></param>
|
||||
public override void DeleteByUserName(string userName) => DbManager.ResetUsers.DeleteMany(User => User.UserName.ToLowerInvariant() == userName.ToLowerInvariant());
|
||||
}
|
||||
}
|
|
@ -85,7 +85,8 @@ namespace Bootstrap.DataAccess.MongoDB
|
|||
.Include(u => u.ApprovedBy)
|
||||
.Include(u => u.Description)
|
||||
.Include(u => u.Groups)
|
||||
.Include(u => u.Roles);
|
||||
.Include(u => u.Roles)
|
||||
.Include(u => u.IsReset);
|
||||
return DbManager.Users.Find(user => user.ApprovedTime != DateTime.MinValue).Project<User>(project).ToList();
|
||||
}
|
||||
|
||||
|
@ -112,8 +113,9 @@ namespace Bootstrap.DataAccess.MongoDB
|
|||
ApprovedBy = user.ApprovedBy,
|
||||
Roles = new List<string>(),
|
||||
Groups = new List<string>(),
|
||||
Icon = $"{DictHelper.RetrieveIconFolderPath()}default.jpg",
|
||||
Description = user.Description
|
||||
Icon = "default.jpg",
|
||||
Description = user.Description,
|
||||
IsReset = 0
|
||||
});
|
||||
return true;
|
||||
}
|
||||
|
@ -251,5 +253,37 @@ namespace Bootstrap.DataAccess.MongoDB
|
|||
});
|
||||
return true;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="user"></param>
|
||||
/// <returns></returns>
|
||||
public override bool ForgotPassword(DataAccess.ResetUser user)
|
||||
{
|
||||
DbManager.Users.UpdateOne(md => md.UserName.ToLowerInvariant() == user.UserName.ToLowerInvariant(), Builders<User>.Update.Set(md => md.IsReset, 1));
|
||||
user.ResetTime = DateTime.Now;
|
||||
DbManager.ResetUsers.InsertOne(user);
|
||||
return true;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="userName"></param>
|
||||
/// <param name="password"></param>
|
||||
/// <returns></returns>
|
||||
public override bool ResetPassword(string userName, string password)
|
||||
{
|
||||
var ret = false;
|
||||
var resetUser = UserHelper.RetrieveResetUserByUserName(userName);
|
||||
if (resetUser == null) return ret;
|
||||
|
||||
var passSalt = LgbCryptography.GenerateSalt();
|
||||
var newPassword = LgbCryptography.ComputeHash(password, passSalt);
|
||||
DbManager.Users.UpdateOne(User => User.UserName.ToLowerInvariant() == userName.ToLowerInvariant(), Builders<User>.Update.Set(md => md.Password, newPassword).Set(md => md.PassSalt, passSalt).Set(md => md.IsReset, 0));
|
||||
DbManager.ResetUsers.DeleteMany(user => user.UserName.ToLowerInvariant() == userName.ToLowerInvariant());
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -135,11 +135,8 @@ namespace Bootstrap.DataAccess
|
|||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="userName"></param>
|
||||
/// <param name="displayName"></param>
|
||||
/// <param name="desc"></param>
|
||||
/// <returns></returns>
|
||||
public static bool ForgotPassword(string userName, string displayName, string desc) => DbContextManager.Create<User>().ForgotPassword(userName, displayName, desc);
|
||||
/// <param name="user"></param>
|
||||
public static bool ForgotPassword(ResetUser user) => DbContextManager.Create<User>().ForgotPassword(user);
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
|
|
|
@ -42,8 +42,7 @@ namespace Bootstrap.DataAccess
|
|||
/// <returns></returns>
|
||||
public virtual bool Save()
|
||||
{
|
||||
var db = DbManager.Create();
|
||||
db.Save(this);
|
||||
DbManager.Create().Save(this);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
@ -190,19 +190,11 @@ namespace Bootstrap.DataAccess
|
|||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="userName"></param>
|
||||
/// <param name="displayName"></param>
|
||||
/// <param name="desc"></param>
|
||||
/// <param name="user"></param>
|
||||
/// <returns></returns>
|
||||
public virtual bool ForgotPassword(string userName, string displayName, string desc)
|
||||
public virtual bool ForgotPassword(ResetUser user)
|
||||
{
|
||||
ResetUser user = new ResetUser()
|
||||
{
|
||||
UserName = userName,
|
||||
DisplayName = displayName,
|
||||
Reason = desc,
|
||||
ResetTime = DateTime.Now
|
||||
};
|
||||
user.ResetTime = DateTime.Now;
|
||||
return user.Save();
|
||||
}
|
||||
|
||||
|
|
|
@ -12,6 +12,7 @@
|
|||
"Icon": "default.jpg",
|
||||
"Css": null,
|
||||
"App": null,
|
||||
"IsReset": 0,
|
||||
"Roles": [
|
||||
"5bd7cc105fa31256f77e4eb7"
|
||||
],
|
||||
|
@ -32,6 +33,7 @@
|
|||
"Icon": "default.jpg",
|
||||
"Css": null,
|
||||
"App": null,
|
||||
"IsReset": 0,
|
||||
"Groups": [
|
||||
|
||||
],
|
||||
|
|
Loading…
Reference in New Issue