Browse Source

修改登录接口返回值,供前端判断

develop-FileUpload-test
胡超1 2 years ago
parent
commit
1c5746f3ac
  1. 654
      24Hour/Controllers/LoginController.cs

654
24Hour/Controllers/LoginController.cs

@ -1,57 +1,57 @@
using _24Hour.Model;
using com.sun.org.apache.bcel.@internal.generic;
using com.sun.xml.@internal.ws.api.model;
using Elight.Entity;
using Elight.Logic;
using Elight.Logic.SystemModel;
using Elight.Utility;
using Elight.Utility.Code;
using Elight.Utility.Encrypt;
using Elight.Utility.Extensions;
using Elight.Utility.logs;
using java.security;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Configuration;
using com.sun.xml.@internal.ws.api.model;
using Elight.Entity;
using Elight.Logic;
using Elight.Logic.SystemModel;
using Elight.Utility;
using Elight.Utility.Code;
using Elight.Utility.Encrypt;
using Elight.Utility.Extensions;
using Elight.Utility.logs;
using java.security;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Logging;
using Microsoft.IdentityModel.Tokens;
using Newtonsoft.Json;
using SqlSugar;
using System.IdentityModel.Tokens.Jwt;
using System.Runtime.Serialization;
using System.Security.Claims;
using System.Text;
namespace _24Hour.Controllers
using Microsoft.IdentityModel.Tokens;
using Newtonsoft.Json;
using SqlSugar;
using System.IdentityModel.Tokens.Jwt;
using System.Runtime.Serialization;
using System.Security.Claims;
using System.Text;
namespace _24Hour.Controllers
{
/// <summary>
/// 登录
/// </summary>
#if DEBUG
/// <summary>
/// 登录
/// </summary>
#if DEBUG
#else
[HiddenApi]
#endif
[ApiController]
[Route("api/APP")]
public class LoginController : ControllerBase
{
private readonly IConfiguration _configuration;
private readonly SqlSugarClient _db;//数据库
private readonly WriteSysLog _logs;//操作日志
private readonly ILogger<LoginController> _logger;//日志
private readonly WechatMessagerClient wechatMessagerClient;
Result ret = new Result();
public LoginController(ILogger<LoginController> logger, SqlSugarClient db, IConfiguration configuration, WechatMessagerClient _wechatMessagerClient)
{
_logger = logger;
_db = db;
_configuration = configuration;
this.wechatMessagerClient = _wechatMessagerClient;
#else
[HiddenApi]
#endif
[ApiController]
[Route("api/APP")]
public class LoginController : ControllerBase
{
private readonly IConfiguration _configuration;
private readonly SqlSugarClient _db;//数据库
private readonly WriteSysLog _logs;//操作日志
private readonly ILogger<LoginController> _logger;//日志
private readonly WechatMessagerClient wechatMessagerClient;
Result ret = new Result();
public LoginController(ILogger<LoginController> logger, SqlSugarClient db, IConfiguration configuration, WechatMessagerClient _wechatMessagerClient)
{
_logger = logger;
_db = db;
_configuration = configuration;
this.wechatMessagerClient = _wechatMessagerClient;
}
[HttpPost]
[Route("LoginDefault")]
[HttpPost]
[Route("LoginDefault")]
[CustomCorsActionFilterAttribute]
public async Task<Result> LoginDefault()
{
@ -77,10 +77,10 @@ namespace _24Hour.Controllers
date.departmentName = dept.departname;
}
}
#region jwt生成token
#region jwt生成token
var tokenHandler = new JwtSecurityTokenHandler();
var claims = new Claim[]
{
{
new Claim(ClaimTypes.UserData,JsonConvert.SerializeObject(date)),
};
@ -116,23 +116,23 @@ namespace _24Hour.Controllers
#endregion
ret.IsSucceed = true;
return ret;
}
/// <summary>
/// 系统登录
/// </summary>
/// <param name="login"></param>
/// <returns></returns>
[HttpPost]
[Route("SystemLogin")]
[CustomCorsActionFilterAttribute]
public async Task<Result> SystemLogin(UserLogin login)
{
try
{
}
/// <summary>
/// 系统登录
/// </summary>
/// <param name="login"></param>
/// <returns></returns>
[HttpPost]
[Route("SystemLogin")]
[CustomCorsActionFilterAttribute]
public async Task<Result> SystemLogin(UserLogin login)
{
try
{
var Passmd5 = Md5.Encrypt32(login.Password).ToLower();
var date = await _db.Queryable<App_Sys_UserModel>().Where(x => x.phone == login.phone && x.IsDeleted == 0).FirstAsync();
var date = await _db.Queryable<App_Sys_UserModel>().Where(x => x.phone == login.phone && x.IsDeleted == 0).FirstAsync();
if (date == null)
{
ret.IsSucceed = false;
@ -154,10 +154,10 @@ namespace _24Hour.Controllers
}
}
#region jwt生成token
#region jwt生成token
var tokenHandler = new JwtSecurityTokenHandler();
var claims = new Claim[]
{
{
new Claim(ClaimTypes.UserData,JsonConvert.SerializeObject(date)),
};
@ -184,7 +184,7 @@ namespace _24Hour.Controllers
phone = date.phone,
photo = date.photo,
duties = date.duties,
identity = date.identity,
identity = date.identity,
openId = date.wechatId,
unitCode = date.unitCode,
unitname = Unitdate?.unitname,
@ -192,31 +192,31 @@ namespace _24Hour.Controllers
departmentName = date.departmentName,
token = tokenString
};
#endregion
}
catch (Exception ex)
{
ret.IsSucceed = false;
ret.Message = $"{ex.Message}";
LogService.WriteLog(ex, "登录");
}
return ret;
}
/// <summary>
/// app--登录
/// </summary>
/// <param name="login"></param>
/// <returns></returns>
[HttpPost]
[Route("Login")]
[CustomCorsActionFilterAttribute]
public async Task<Result> Login(UserLogin login)
{
try
{
var Passmd5 = Md5.Encrypt32(login.Password).ToLower();
var date = await _db.Queryable<App_Sys_UserModel>().Where(x => x.phone == login.phone && x.IsDeleted == 0).FirstAsync();
#endregion
}
catch (Exception ex)
{
ret.IsSucceed = false;
ret.Message = $"{ex.Message}";
LogService.WriteLog(ex, "登录");
}
return ret;
}
/// <summary>
/// app--登录
/// </summary>
/// <param name="login"></param>
/// <returns></returns>
[HttpPost]
[Route("Login")]
[CustomCorsActionFilterAttribute]
public async Task<Result> Login(UserLogin login)
{
try
{
var Passmd5 = Md5.Encrypt32(login.Password).ToLower();
var date = await _db.Queryable<App_Sys_UserModel>().Where(x => x.phone == login.phone && x.IsDeleted == 0).FirstAsync();
if (date == null)
{
ret.IsSucceed = false;
@ -267,10 +267,10 @@ namespace _24Hour.Controllers
date.departmentName = dept.departname;
}
}
#region jwt生成token
#region jwt生成token
var tokenHandler = new JwtSecurityTokenHandler();
var claims = new Claim[]
{
{
new Claim(ClaimTypes.UserData,JsonConvert.SerializeObject(date)),
};
@ -295,7 +295,7 @@ namespace _24Hour.Controllers
phone = date.phone,
photo = date.photo,
duties = date.duties,
identity = date.identity,
identity = date.identity,
openId = date.wechatId,
usertype = date.usertype,
unitCode = date.unitCode,
@ -303,16 +303,16 @@ namespace _24Hour.Controllers
departmentName = date.departmentName,
token = tokenString
};
#endregion
ret.IsSucceed = true;
}
catch (Exception ex)
{
ret.IsSucceed = false;
ret.Message = $"{ex.Message}";
LogService.WriteLog(ex, "登录");
}
return ret;
#endregion
ret.IsSucceed = true;
}
catch (Exception ex)
{
ret.IsSucceed = false;
ret.Message = $"{ex.Message}";
LogService.WriteLog(ex, "登录");
}
return ret;
}
/// <summary>
@ -320,8 +320,8 @@ namespace _24Hour.Controllers
/// </summary>
/// <param name="code"></param>
/// <returns></returns>
[HttpGet]
[Route("WeChatLoginCode")]
[HttpGet]
[Route("WeChatLoginCode")]
public async Task<Result> WeChatLoginByCode(string code)
{
var opendata = await GetOpenId(code);
@ -339,8 +339,8 @@ namespace _24Hour.Controllers
/// </summary>
/// <param name="code"></param>
/// <returns></returns>
[HttpGet]
[Route("WeChatLoginByGzhCode")]
[HttpGet]
[Route("WeChatLoginByGzhCode")]
public async Task<Result> WeChatLoginByGzhCode(string code)
{
var opendata = await GetGzhOpenId(code);
@ -359,8 +359,8 @@ namespace _24Hour.Controllers
///// </summary>
///// <param name="code"></param>
///// <returns></returns>
//[HttpGet]
//[Route("GetCode")]
//[HttpGet]
//[Route("GetCode")]
//public async Task<Result> GetCode(string code,string state)
//{
// var opendata = await GetGzhOpenId(code);
@ -372,128 +372,134 @@ namespace _24Hour.Controllers
// {
// return opendata;
// }
//}
/// <summary>
/// 微信授权登录
/// </summary>
/// <param name="openId"></param>
/// <returns></returns>
[HttpGet]
[Route("WeChatLogin")]
public async Task<Result> WeChatLogin(string openId)
{
var date = await _db.Queryable<App_Sys_UserModel>()
.Where(q => q.IsDeleted == 0 && q.wechatId == openId)
.OrderByDescending(x => x.createtime)
.FirstAsync();
if (date != null)
//}
/// <summary>
/// 微信授权登录
/// </summary>
/// <param name="openId"></param>
/// <returns></returns>
[HttpGet]
[Route("WeChatLogin")]
public async Task<Result> WeChatLogin(string openId)
{
var date = await _db.Queryable<App_Sys_UserModel>()
.Where(q => q.IsDeleted == 0 && q.wechatId == openId)
.OrderByDescending(x => x.createtime)
.FirstAsync();
if (date != null)
{
if (date.identity == "律师" && date.audit == 1)
{
ret.IsSucceed = false;
ret.Message = $"用户信息审核未通过,原因:{date.describe},请重新注册!";
ret.result = "用户信息审核未通过";
return ret;
}
else if (date.identity == "律师" && date.audit == 2)
{
ret.IsSucceed = false;
ret.Message = "用户信息审核中!";
ret.result = "用户信息审核中";
return ret;
}
}
if (date.isdeactivate == 1)
{
ret.IsSucceed = false;
ret.Message = "该账号已被禁用,请联系管理员!";
ret.result = "该账号已被禁用";
return ret;
}
if (date.usertype == 0 && date.becurrent == 1)
{
ret.IsSucceed = false;
ret.Message = $"账号未授权无法登录,请联系管理员!";
ret.result = "账号未授权无法登录";
return ret;
}
if (date.usertype == 0 && date.becurrent == 1)
{
ret.IsSucceed = false;
ret.Message = $"账号未授权无法登录,请联系管理员!";
return ret;
}
#region jwt生成token
var tokenHandler = new JwtSecurityTokenHandler();
var claims = new Claim[]
{
new Claim(ClaimTypes.UserData,JsonConvert.SerializeObject(date)),
};
var key = new SymmetricSecurityKey(Encoding.ASCII.GetBytes(_configuration.GetSection("JwtConfiguration:Jwtkey").Value));
var signingCredentials = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);
//Token
var jwttoken = new JwtSecurityToken(
issuer: _configuration.GetSection("JwtConfiguration:Issuer").Value,
audience: _configuration.GetSection("JwtConfiguration:Audience").Value,
claims: claims,
notBefore: DateTime.Now,
expires: DateTime.Now.AddDays(1),
signingCredentials: signingCredentials
);
//var token = new JwtSecurityTokenHandler().CreateToken(jwttoken);
var tokenString = new JwtSecurityTokenHandler().WriteToken(jwttoken);
ret.result = new
{
Id = date.Id,
name = date.name,
sex = date.sex,
phone = date.phone,
photo = date.photo,
duties = date.duties,
identity = date.identity,
usertype = date.usertype,
unitCode = date.unitCode,
token = tokenString,
openId = date.wechatId,
departmentPhoto = date.departmentPhoto,
identityphoto = date.identityphoto,
cardIdphoto = date.cardIdphoto,
departmentName = date.departmentName,
identitycardId = date.identitycardId,
departmentSCC = date.departmentUnifiedSocialCreditCode
};
#endregion
ret.IsSucceed = true;
}
else
{
ret.IsSucceed = false;
ret.Message = "微信未授权,请先注册账号!";
}
return ret;
}
/// <summary>
/// APP添加用户
/// </summary>
/// <param name="info"></param>
/// <returns></returns>
[HttpPost]
[Route("AddUser1")]
public async Task<Result> AddUser1(App_Sys_UserModel UserModel)
{
try
}
#region jwt生成token
var tokenHandler = new JwtSecurityTokenHandler();
var claims = new Claim[]
{
new Claim(ClaimTypes.UserData,JsonConvert.SerializeObject(date)),
};
var key = new SymmetricSecurityKey(Encoding.ASCII.GetBytes(_configuration.GetSection("JwtConfiguration:Jwtkey").Value));
var signingCredentials = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);
//Token
var jwttoken = new JwtSecurityToken(
issuer: _configuration.GetSection("JwtConfiguration:Issuer").Value,
audience: _configuration.GetSection("JwtConfiguration:Audience").Value,
claims: claims,
notBefore: DateTime.Now,
expires: DateTime.Now.AddDays(1),
signingCredentials: signingCredentials
);
//var token = new JwtSecurityTokenHandler().CreateToken(jwttoken);
var tokenString = new JwtSecurityTokenHandler().WriteToken(jwttoken);
ret.result = new
{
Id = date.Id,
name = date.name,
sex = date.sex,
phone = date.phone,
photo = date.photo,
duties = date.duties,
identity = date.identity,
usertype = date.usertype,
unitCode = date.unitCode,
token = tokenString,
openId = date.wechatId,
departmentPhoto = date.departmentPhoto,
identityphoto = date.identityphoto,
cardIdphoto = date.cardIdphoto,
departmentName = date.departmentName,
identitycardId = date.identitycardId,
departmentSCC = date.departmentUnifiedSocialCreditCode
};
#endregion
ret.IsSucceed = true;
}
else
{
ret.IsSucceed = false;
ret.Message = "微信未授权,请先注册账号!";
ret.result = "微信未授权";
}
return ret;
}
/// <summary>
/// APP添加用户
/// </summary>
/// <param name="info"></param>
/// <returns></returns>
[HttpPost]
[Route("AddUser1")]
public async Task<Result> AddUser1(App_Sys_UserModel UserModel)
{
try
{
_logger.LogInformation(UserModel.ConvertToJsonStr());
_logger.LogInformation(UserModel.ConvertToJsonStr());
//if (string.IsNullOrEmpty(UserModel.wechatId) && await _db.Queryable<App_Sys_UserModel>().AnyAsync(x => x.wechatId == UserModel.wechatId && x.IsDeleted == 0))
//{
// ret.IsSucceed = false;
// ret.Message = "当前微信已与其他账号绑定";
// return ret;
//}
if (string.IsNullOrEmpty(UserModel.wechatId) == false)
{
if (await _db.Queryable<App_Sys_UserModel>().AnyAsync(x => x.wechatId == UserModel.wechatId && x.IsDeleted == 0 && x.audit != 1 && x.isdeactivate == 0))
{
ret.IsSucceed = false;
ret.Message = "当前微信已与其他账号绑定";
return ret;
}
}
var data = await _db.Queryable<App_Sys_UserModel>().Where(q => q.phone == UserModel.phone && q.IsDeleted == 0).FirstAsync();
if (string.IsNullOrEmpty(UserModel.wechatId) == false)
{
if (await _db.Queryable<App_Sys_UserModel>().AnyAsync(x => x.wechatId == UserModel.wechatId && x.IsDeleted == 0 && x.audit != 1 && x.isdeactivate == 0))
{
ret.IsSucceed = false;
ret.Message = "当前微信已与其他账号绑定";
return ret;
}
}
var data = await _db.Queryable<App_Sys_UserModel>().Where(q => q.phone == UserModel.phone && q.IsDeleted == 0).FirstAsync();
if (UserModel.identity == "律师")
{
{
if (data != null && (data.identity != "律师" || data.audit == 0))
{
ret.IsSucceed = false;
@ -580,7 +586,7 @@ namespace _24Hour.Controllers
ret.IsSucceed = true;
ret.result = "添加成功";
}
}
}
}
else
{
@ -606,57 +612,57 @@ namespace _24Hour.Controllers
{
ret.IsSucceed = true;
ret.result = "添加成功";
}
}
}
catch (System.Exception ex)
{
_db.RollbackTran();
ret.IsSucceed = false;
ret.Message = ex.Message;
}
return ret;
}
/// <summary>
/// 单位list集合
/// </summary>
/// <param name="info"></param>
/// <returns></returns>
[HttpPost]
[Route("QueryUnitlist")]
public async Task<Result> QueryUnitlist(App_Sys_UnitInput Unitdata)
{
var list = await _db.Queryable<App_Sys_UnitModel>()
.WhereIF(!Unitdata.unitCode.IsNull(), q => q.unitCode.Contains(Unitdata.unitCode))
.WhereIF(!Unitdata.unitname.IsNull(), q => q.unitname.Contains(Unitdata.unitname))
.WhereIF(!Unitdata.unitjc.IsNull(), q => q.unitjc.Contains(Unitdata.unitjc))
.Where(q => q.IsDelete == 0).ToListAsync();
ret.IsSucceed = true;
ret.result = list;
return ret;
}
/// <summary>
/// 获取设备视频流地址
/// </summary>
/// <param name="Sendingdata"></param>
/// <returns></returns>
[HttpGet]
[Route("getrtsp")]
public async Task<Result> getrtsp(string str)
{
ret.IsSucceed = true;
ret.result = $"{_configuration.GetSection($"Videoaddress:{str}").Value}";
return ret;
}
[HttpGet]
[Route("cardIdLogin")]
public async Task<Result> cardIdLogin(string cardId, string name)
{
var date = await _db.Queryable<App_Sys_UserModel>().Where(q => q.IsDeleted == 0 && q.cardId == cardId && q.name == name).FirstAsync();
if (date != null)
}
}
}
catch (System.Exception ex)
{
_db.RollbackTran();
ret.IsSucceed = false;
ret.Message = ex.Message;
}
return ret;
}
/// <summary>
/// 单位list集合
/// </summary>
/// <param name="info"></param>
/// <returns></returns>
[HttpPost]
[Route("QueryUnitlist")]
public async Task<Result> QueryUnitlist(App_Sys_UnitInput Unitdata)
{
var list = await _db.Queryable<App_Sys_UnitModel>()
.WhereIF(!Unitdata.unitCode.IsNull(), q => q.unitCode.Contains(Unitdata.unitCode))
.WhereIF(!Unitdata.unitname.IsNull(), q => q.unitname.Contains(Unitdata.unitname))
.WhereIF(!Unitdata.unitjc.IsNull(), q => q.unitjc.Contains(Unitdata.unitjc))
.Where(q => q.IsDelete == 0).ToListAsync();
ret.IsSucceed = true;
ret.result = list;
return ret;
}
/// <summary>
/// 获取设备视频流地址
/// </summary>
/// <param name="Sendingdata"></param>
/// <returns></returns>
[HttpGet]
[Route("getrtsp")]
public async Task<Result> getrtsp(string str)
{
ret.IsSucceed = true;
ret.result = $"{_configuration.GetSection($"Videoaddress:{str}").Value}";
return ret;
}
[HttpGet]
[Route("cardIdLogin")]
public async Task<Result> cardIdLogin(string cardId, string name)
{
var date = await _db.Queryable<App_Sys_UserModel>().Where(q => q.IsDeleted == 0 && q.cardId == cardId && q.name == name).FirstAsync();
if (date != null)
{
//if (date.usertype == 1 && date.audit == null)
// {
@ -671,52 +677,52 @@ namespace _24Hour.Controllers
// return ret;
// }
// else
if (date.usertype == 0 && date.becurrent == 1 && date.isdeactivate == 1)
{
ret.IsSucceed = false;
ret.Message = $"用户未授权无法登录,请联系管理员!";
return ret;
}
#region jwt生成token
var tokenHandler = new JwtSecurityTokenHandler();
var claims = new Claim[]
{
new Claim(ClaimTypes.UserData,JsonConvert.SerializeObject(date)),
};
var key = new SymmetricSecurityKey(Encoding.ASCII.GetBytes(_configuration.GetSection("JwtConfiguration:Jwtkey").Value));
var signingCredentials = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);
//Token
var jwttoken = new JwtSecurityToken(
issuer: _configuration.GetSection("JwtConfiguration:Issuer").Value,
audience: _configuration.GetSection("JwtConfiguration:Audience").Value,
claims: claims,
notBefore: DateTime.Now,
expires: DateTime.Now.AddDays(1),
signingCredentials: signingCredentials
);
//var token = new JwtSecurityTokenHandler().CreateToken(jwttoken);
var tokenString = new JwtSecurityTokenHandler().WriteToken(jwttoken);
ret.result = new
{
Id = date.Id,
name = date.name,
sex = date.sex,
phone = date.phone,
photo = date.photo,
duties = date.duties,
identity = date.identity,
openId = date.wechatId,
usertype = date.usertype,
unitCode = date.unitCode,
token = tokenString
};
#endregion
ret.IsSucceed = true;
}
else
if (date.usertype == 0 && date.becurrent == 1 && date.isdeactivate == 1)
{
ret.IsSucceed = false;
ret.Message = $"用户未授权无法登录,请联系管理员!";
return ret;
}
#region jwt生成token
var tokenHandler = new JwtSecurityTokenHandler();
var claims = new Claim[]
{
new Claim(ClaimTypes.UserData,JsonConvert.SerializeObject(date)),
};
var key = new SymmetricSecurityKey(Encoding.ASCII.GetBytes(_configuration.GetSection("JwtConfiguration:Jwtkey").Value));
var signingCredentials = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);
//Token
var jwttoken = new JwtSecurityToken(
issuer: _configuration.GetSection("JwtConfiguration:Issuer").Value,
audience: _configuration.GetSection("JwtConfiguration:Audience").Value,
claims: claims,
notBefore: DateTime.Now,
expires: DateTime.Now.AddDays(1),
signingCredentials: signingCredentials
);
//var token = new JwtSecurityTokenHandler().CreateToken(jwttoken);
var tokenString = new JwtSecurityTokenHandler().WriteToken(jwttoken);
ret.result = new
{
Id = date.Id,
name = date.name,
sex = date.sex,
phone = date.phone,
photo = date.photo,
duties = date.duties,
identity = date.identity,
openId = date.wechatId,
usertype = date.usertype,
unitCode = date.unitCode,
token = tokenString
};
#endregion
ret.IsSucceed = true;
}
else
{
var datea = await _db.Queryable<App_Sys_UserModel>().Where(q => q.IsDeleted == 0 && q.cardId == cardId).FirstAsync();
var datea = await _db.Queryable<App_Sys_UserModel>().Where(q => q.IsDeleted == 0 && q.cardId == cardId).FirstAsync();
if (datea == null)
{
var unitcode = _configuration.GetSection("CaseTwenty:UnitCode").Value;
@ -737,15 +743,15 @@ namespace _24Hour.Controllers
ret.IsSucceed = true;
ret.result = "添加成功";
}
}
}
else
{
ret.IsSucceed = false;
ret.Message = $"用户未授权无法登录,请联系管理员!";
ret.IsSucceed = false;
ret.Message = $"用户未授权无法登录,请联系管理员!";
return ret;
}
}
return ret;
}
return ret;
}
/// <summary>
/// 小程序AppID
@ -769,17 +775,17 @@ namespace _24Hour.Controllers
/// <returns></returns>
[HttpGet("GetGzhOpenId")]
public Task<Result> GetGzhOpenId(string code) => wechatMessagerClient.GetGzhOpenId(code);
}
public class UserLogin
{
[DataMember]
public string phone { get; set; }
/// <summary>
/// 登录密码
/// </summary>
[DataMember]
public string Password { get; set; }
}
}
public class UserLogin
{
[DataMember]
public string phone { get; set; }
/// <summary>
/// 登录密码
/// </summary>
[DataMember]
public string Password { get; set; }
}
}
Loading…
Cancel
Save