more info from Me
This commit is contained in:
@ -13,6 +13,8 @@ namespace Yavsc.WebApi.Controllers
|
|||||||
using Models.Auth;
|
using Models.Auth;
|
||||||
using Yavsc.Helpers;
|
using Yavsc.Helpers;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using Microsoft.Data.Entity;
|
||||||
|
using Microsoft.AspNet.Identity.EntityFramework;
|
||||||
|
|
||||||
[Authorize(),Route("~/api/account")]
|
[Authorize(),Route("~/api/account")]
|
||||||
public class ApiAccountController : Controller
|
public class ApiAccountController : Controller
|
||||||
@ -21,14 +23,16 @@ namespace Yavsc.WebApi.Controllers
|
|||||||
private UserManager<ApplicationUser> _userManager;
|
private UserManager<ApplicationUser> _userManager;
|
||||||
private readonly SignInManager<ApplicationUser> _signInManager;
|
private readonly SignInManager<ApplicationUser> _signInManager;
|
||||||
|
|
||||||
|
ApplicationDbContext _dbContext;
|
||||||
private ILogger _logger;
|
private ILogger _logger;
|
||||||
|
|
||||||
public ApiAccountController(UserManager<ApplicationUser> userManager,
|
public ApiAccountController(UserManager<ApplicationUser> userManager,
|
||||||
SignInManager<ApplicationUser> signInManager, ILoggerFactory loggerFactory)
|
SignInManager<ApplicationUser> signInManager, ILoggerFactory loggerFactory, ApplicationDbContext dbContext)
|
||||||
{
|
{
|
||||||
UserManager = userManager;
|
UserManager = userManager;
|
||||||
_signInManager = signInManager;
|
_signInManager = signInManager;
|
||||||
_logger = loggerFactory.CreateLogger("ApiAuth");
|
_logger = loggerFactory.CreateLogger("ApiAuth");
|
||||||
|
_dbContext = dbContext;
|
||||||
}
|
}
|
||||||
|
|
||||||
public UserManager<ApplicationUser> UserManager
|
public UserManager<ApplicationUser> UserManager
|
||||||
@ -131,13 +135,20 @@ namespace Yavsc.WebApi.Controllers
|
|||||||
new { error = "user not found" });
|
new { error = "user not found" });
|
||||||
var uid = User.GetUserId();
|
var uid = User.GetUserId();
|
||||||
|
|
||||||
var iduser = await UserManager.FindByIdAsync(uid);
|
var userData = await _dbContext.Users
|
||||||
|
.Include(u=>u.PostalAddress)
|
||||||
|
.Include(u=>u.AccountBalance)
|
||||||
|
.Include(u=>u.Roles)
|
||||||
|
.FirstAsync(u=>u.Id == uid);
|
||||||
|
|
||||||
|
var user = new Me(userData);
|
||||||
|
|
||||||
|
var userRoles = _dbContext.UserRoles.Where(u=>u.UserId == uid).ToArray();
|
||||||
|
|
||||||
|
IdentityRole [] roles = _dbContext.Roles.Where(r=>userRoles.Any(ur=>ur.RoleId==r.Id)).ToArray();
|
||||||
|
|
||||||
|
user.Roles = roles.Select(r=>r.Name).ToArray();
|
||||||
|
|
||||||
var user = new Me(iduser.Id,iduser.UserName,
|
|
||||||
new string [] { iduser.Email },
|
|
||||||
await UserManager.GetRolesAsync(iduser),
|
|
||||||
iduser.Avatar, iduser.PostalAddress?.Address
|
|
||||||
);
|
|
||||||
return Ok(user);
|
return Ok(user);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -27,7 +27,7 @@ namespace Yavsc.Models.Relationship
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public class Location : Position {
|
public class Location : Position, ILocation {
|
||||||
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
||||||
public long Id { get; set; }
|
public long Id { get; set; }
|
||||||
[Required(),
|
[Required(),
|
||||||
|
@ -1,33 +1,43 @@
|
|||||||
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
|
||||||
namespace Yavsc.Models.Auth
|
namespace Yavsc.Models.Auth
|
||||||
{
|
{
|
||||||
public class Me {
|
public class Me : IApplicationUser {
|
||||||
public Me(string useruserid,
|
public Me(ApplicationUser user)
|
||||||
string username,
|
|
||||||
IEnumerable<string> emails,
|
|
||||||
IEnumerable<string> roles,
|
|
||||||
string avatar,
|
|
||||||
string address)
|
|
||||||
{
|
{
|
||||||
Id = useruserid;
|
Id = user.Id;
|
||||||
UserName = username;
|
UserName = user.UserName;
|
||||||
EMails = emails.ToArray();
|
EMail = user.Email;
|
||||||
Roles = roles.ToArray();
|
Avatar = user.Avatar;
|
||||||
Avatar = avatar;
|
PostalAddress = user.PostalAddress;
|
||||||
Address = address;
|
DedicatedGoogleCalendar = user.DedicatedGoogleCalendar;
|
||||||
}
|
}
|
||||||
public string Id { get; set; }
|
public string Id { get; set; }
|
||||||
public string UserName { get; set; }
|
public string UserName { get; set; }
|
||||||
public string[] EMails { get; set; }
|
public string EMail { get; set; }
|
||||||
public string[] Roles { get; set; }
|
public string[] Roles { get; set; }
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Known as profile, could point to an avatar
|
/// Known as profile, could point to an avatar
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public string Avatar { get; set; }
|
public string Avatar { get; set; }
|
||||||
public string Address { get; set; }
|
|
||||||
|
public IAccountBalance AccountBalance
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
|
|
||||||
|
public string DedicatedGoogleCalendar
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ILocation PostalAddress
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
Reference in New Issue
Block a user