完成匿名登录接口
This commit is contained in:
parent
80595e250c
commit
dd115afdfc
|
|
@ -12,6 +12,7 @@ using WGShare.API.Hubs;
|
|||
using WGShare.Domain.Constant;
|
||||
using WGShare.Domain.DTOs.Login;
|
||||
using WGShare.Domain.Entities;
|
||||
using WGShare.Domain.Enums;
|
||||
using WGShare.Domain.FriendlyException;
|
||||
using WGShare.Domain.FriendlyException.Exceptions;
|
||||
|
||||
|
|
@ -47,7 +48,7 @@ namespace WGShare.API.Controllers
|
|||
[HttpGet("check-user"), AllowAnonymous]
|
||||
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>
|
||||
|
|
@ -58,7 +59,7 @@ namespace WGShare.API.Controllers
|
|||
public async Task<IActionResult> Login([FromBody] UserLoginDTO loginDTO)
|
||||
{
|
||||
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)
|
||||
{
|
||||
throw Oops.Oh("用户名或密码不正确!");
|
||||
|
|
@ -123,7 +124,7 @@ namespace WGShare.API.Controllers
|
|||
if (!string.IsNullOrWhiteSpace(roomNum))
|
||||
{
|
||||
await _hubContext.Clients.Group(roomNum).UserLeave(user.Id);
|
||||
}
|
||||
}
|
||||
await _hubContext.Clients.Client(connectId).ForceLogout("账号已在其他地方登录,您被迫下线!");
|
||||
}
|
||||
|
||||
|
|
@ -194,7 +195,7 @@ namespace WGShare.API.Controllers
|
|||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 登出(暂未处理任何业务逻辑)
|
||||
/// </summary>
|
||||
|
|
@ -205,6 +206,68 @@ namespace WGShare.API.Controllers
|
|||
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 后台管理员登录接口
|
||||
|
|
|
|||
|
|
@ -49,7 +49,7 @@ namespace WGShare.API.Controllers.Frontend
|
|||
|
||||
var list = await _sqlSugar.Queryable<User>()
|
||||
.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(isOnline.HasValue && isOnline.Value == true, (u, r) => onlineUid.Contains(u.Id))
|
||||
.WhereIF(isOnline.HasValue && isOnline.Value == false, (u, r) => !onlineUid.Contains(u.Id))
|
||||
|
|
|
|||
|
|
@ -30,6 +30,13 @@
|
|||
</summary>
|
||||
<returns></returns>
|
||||
</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)">
|
||||
<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")]
|
||||
public string TenantId { get; set; }
|
||||
/// <summary>
|
||||
/// 是否匿名登录用户
|
||||
///</summary>
|
||||
[SugarColumn(ColumnName = "is_anonymous")]
|
||||
public bool IsAnonymous { get; set; }
|
||||
/// <summary>
|
||||
/// 共享屏幕Id
|
||||
///</summary>
|
||||
[SugarColumn(ColumnName = "screen_share_id", IsOnlyIgnoreUpdate = true)]
|
||||
|
|
|
|||
Loading…
Reference in New Issue