完成匿名登录接口
This commit is contained in:
parent
80595e250c
commit
dd115afdfc
|
|
@ -12,6 +12,7 @@ using WGShare.API.Hubs;
|
||||||
using WGShare.Domain.Constant;
|
using WGShare.Domain.Constant;
|
||||||
using WGShare.Domain.DTOs.Login;
|
using WGShare.Domain.DTOs.Login;
|
||||||
using WGShare.Domain.Entities;
|
using WGShare.Domain.Entities;
|
||||||
|
using WGShare.Domain.Enums;
|
||||||
using WGShare.Domain.FriendlyException;
|
using WGShare.Domain.FriendlyException;
|
||||||
using WGShare.Domain.FriendlyException.Exceptions;
|
using WGShare.Domain.FriendlyException.Exceptions;
|
||||||
|
|
||||||
|
|
@ -47,7 +48,7 @@ namespace WGShare.API.Controllers
|
||||||
[HttpGet("check-user"), AllowAnonymous]
|
[HttpGet("check-user"), AllowAnonymous]
|
||||||
public async Task<bool> CheckUser([FromQuery] string account)
|
public async Task<bool> CheckUser([FromQuery] string account)
|
||||||
{
|
{
|
||||||
return await _sqlSugar.Queryable<User>().AnyAsync(x => x.IsDelete == false && x.Account == account);
|
return await _sqlSugar.Queryable<User>().AnyAsync(x => x.IsDelete == false && x.Account == account && x.IsAnonymous == false);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
@ -58,7 +59,7 @@ namespace WGShare.API.Controllers
|
||||||
public async Task<IActionResult> Login([FromBody] UserLoginDTO loginDTO)
|
public async Task<IActionResult> Login([FromBody] UserLoginDTO loginDTO)
|
||||||
{
|
{
|
||||||
var user = await _sqlSugar.Queryable<User>()
|
var user = await _sqlSugar.Queryable<User>()
|
||||||
.FirstAsync(x => x.Account == loginDTO.Account && x.IsDelete == false && x.Pwd == loginDTO.Pwd);
|
.FirstAsync(x => x.Account == loginDTO.Account && x.IsDelete == false && x.Pwd == loginDTO.Pwd && x.IsAnonymous == false);
|
||||||
if (user == null)
|
if (user == null)
|
||||||
{
|
{
|
||||||
throw Oops.Oh("用户名或密码不正确!");
|
throw Oops.Oh("用户名或密码不正确!");
|
||||||
|
|
@ -123,7 +124,7 @@ namespace WGShare.API.Controllers
|
||||||
if (!string.IsNullOrWhiteSpace(roomNum))
|
if (!string.IsNullOrWhiteSpace(roomNum))
|
||||||
{
|
{
|
||||||
await _hubContext.Clients.Group(roomNum).UserLeave(user.Id);
|
await _hubContext.Clients.Group(roomNum).UserLeave(user.Id);
|
||||||
}
|
}
|
||||||
await _hubContext.Clients.Client(connectId).ForceLogout("账号已在其他地方登录,您被迫下线!");
|
await _hubContext.Clients.Client(connectId).ForceLogout("账号已在其他地方登录,您被迫下线!");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -194,7 +195,7 @@ namespace WGShare.API.Controllers
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 登出(暂未处理任何业务逻辑)
|
/// 登出(暂未处理任何业务逻辑)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
@ -205,6 +206,68 @@ namespace WGShare.API.Controllers
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 匿名登录
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="loginDTO"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost("anon-login"), AllowAnonymous]
|
||||||
|
public async Task<IActionResult> AnonymousLogin([FromBody] AnonymousUserLoginDTO loginDTO)
|
||||||
|
{
|
||||||
|
var room = await _sqlSugar.Queryable<Room>().Where(x => x.RoomNum == loginDTO.RoomNum && x.IsDelete == false).FirstAsync();
|
||||||
|
if (room == null)
|
||||||
|
{
|
||||||
|
throw Oops.Oh("房间不存在!");
|
||||||
|
}
|
||||||
|
|
||||||
|
var user = await _sqlSugar.Queryable<User>().Where(x => x.Account == loginDTO.DeviceId).FirstAsync();
|
||||||
|
if (user == null)
|
||||||
|
{
|
||||||
|
// 用户不存在,创建
|
||||||
|
user = new User
|
||||||
|
{
|
||||||
|
Account = loginDTO.DeviceId,
|
||||||
|
IsDelete = false,
|
||||||
|
IsAnonymous = true,
|
||||||
|
Pwd = "123456",
|
||||||
|
RoleId = "2",
|
||||||
|
UserName = loginDTO.NickName,
|
||||||
|
ScreenShareId = UserShareIdHelper.GenerateUnique8DigitNumber(),
|
||||||
|
TenantId = "123456",
|
||||||
|
};
|
||||||
|
user.Id = (await _sqlSugar.Insertable(user).ExecuteReturnIdentityAsync()).ToString();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (user.IsDelete)
|
||||||
|
{
|
||||||
|
throw Oops.Oh("该设备已禁止登录!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var btnAutn = new List<Claim>();
|
||||||
|
btnAutn.Add(new Claim("perm", "0"));
|
||||||
|
btnAutn.Add(new Claim("roleid", "2"));
|
||||||
|
btnAutn.Add(new Claim("tenant", room.TenantId));
|
||||||
|
btnAutn.Add(new Claim("account", user.Account));
|
||||||
|
btnAutn.Add(new Claim("uname", user.UserName));
|
||||||
|
btnAutn.Add(new Claim("ssid", user.ScreenShareId));
|
||||||
|
|
||||||
|
var accessToken = _jwtHelper.CreateToken(user.Id, btnAutn);
|
||||||
|
return Ok(new
|
||||||
|
{
|
||||||
|
perms = "0",
|
||||||
|
token = accessToken,
|
||||||
|
refresh_token = "",
|
||||||
|
roleId = user.RoleId,
|
||||||
|
userName = user.UserName,
|
||||||
|
tenantName = "匿名用户区域",
|
||||||
|
expire = _configuration["Jwt:Expires"].ToInt32(),
|
||||||
|
account = user.Account,
|
||||||
|
uid = user.Id,
|
||||||
|
screenShareId = user.ScreenShareId
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#region 后台管理员登录接口
|
#region 后台管理员登录接口
|
||||||
|
|
|
||||||
|
|
@ -49,7 +49,7 @@ namespace WGShare.API.Controllers.Frontend
|
||||||
|
|
||||||
var list = await _sqlSugar.Queryable<User>()
|
var list = await _sqlSugar.Queryable<User>()
|
||||||
.InnerJoin<Role>((u, r) => u.RoleId == r.Id)
|
.InnerJoin<Role>((u, r) => u.RoleId == r.Id)
|
||||||
.Where((u, r) => u.IsDelete == false && u.TenantId == TenantId)
|
.Where((u, r) => u.IsDelete == false && u.TenantId == TenantId && u.IsAnonymous == false)
|
||||||
.WhereIF(!string.IsNullOrWhiteSpace(searchKeywod), (u, r) => u.UserName.Contains(searchKeywod) || u.Account.Contains(searchKeywod))
|
.WhereIF(!string.IsNullOrWhiteSpace(searchKeywod), (u, r) => u.UserName.Contains(searchKeywod) || u.Account.Contains(searchKeywod))
|
||||||
.WhereIF(isOnline.HasValue && isOnline.Value == true, (u, r) => onlineUid.Contains(u.Id))
|
.WhereIF(isOnline.HasValue && isOnline.Value == true, (u, r) => onlineUid.Contains(u.Id))
|
||||||
.WhereIF(isOnline.HasValue && isOnline.Value == false, (u, r) => !onlineUid.Contains(u.Id))
|
.WhereIF(isOnline.HasValue && isOnline.Value == false, (u, r) => !onlineUid.Contains(u.Id))
|
||||||
|
|
|
||||||
|
|
@ -30,6 +30,13 @@
|
||||||
</summary>
|
</summary>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="M:WGShare.API.Controllers.AuthController.AnonymousLogin(WGShare.Domain.DTOs.Login.AnonymousUserLoginDTO)">
|
||||||
|
<summary>
|
||||||
|
匿名登录
|
||||||
|
</summary>
|
||||||
|
<param name="loginDTO"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
<member name="M:WGShare.API.Controllers.AuthController.LoginForAdmin(WGShare.Domain.DTOs.Login.UserLoginDTO)">
|
<member name="M:WGShare.API.Controllers.AuthController.LoginForAdmin(WGShare.Domain.DTOs.Login.UserLoginDTO)">
|
||||||
<summary>
|
<summary>
|
||||||
管理员登录
|
管理员登录
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,20 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace WGShare.Domain.DTOs.Login
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 匿名用户登录
|
||||||
|
/// </summary>
|
||||||
|
public class AnonymousUserLoginDTO
|
||||||
|
{
|
||||||
|
public string DeviceId { get; set; }
|
||||||
|
|
||||||
|
public string NickName { get; set; }
|
||||||
|
|
||||||
|
public string RoomNum { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -59,6 +59,11 @@ namespace WGShare.Domain.Entities
|
||||||
[SugarColumn(ColumnName = "tenant_id")]
|
[SugarColumn(ColumnName = "tenant_id")]
|
||||||
public string TenantId { get; set; }
|
public string TenantId { get; set; }
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
/// 是否匿名登录用户
|
||||||
|
///</summary>
|
||||||
|
[SugarColumn(ColumnName = "is_anonymous")]
|
||||||
|
public bool IsAnonymous { get; set; }
|
||||||
|
/// <summary>
|
||||||
/// 共享屏幕Id
|
/// 共享屏幕Id
|
||||||
///</summary>
|
///</summary>
|
||||||
[SugarColumn(ColumnName = "screen_share_id", IsOnlyIgnoreUpdate = true)]
|
[SugarColumn(ColumnName = "screen_share_id", IsOnlyIgnoreUpdate = true)]
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue