UserController.cs
    
    
    
    
    
        Home
            /
FileServer                    /
Web                    /
Controllers                    /
API                    /
                    UserController.cs
    
    
            
            using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Model.Entities.Users;
using Web.Models.Base;
namespace Web.Controllers
{
    public class AuthResult
    {
        public bool Successe { set; get; }
        public string ResMsg { set; get; }
        public string Token { set; get; }
        public string UserName { set; get; }
    }
    public class UserController : BaseApiController
    {
        /// <summary>
        /// Должен выдавать токен авторизации
        /// </summary>
        /// <param name="Login"></param>
        /// <param name="Password"></param>
        /// <returns></returns>
        /// 
        [HttpPost]
        public JsonResult Auth(string Login, string Password)
        {
            var user = UOW.Repo_User.All_NoTrack.
                FirstOrDefault(e => e.Login == Login && e.Password == Password
                && e.IsActive);
            if (user != null)
            {
                return Json(new AuthResult()
                {
                    Successe = true,
                    Token = user.ID.ToString(),
                    UserName = user.Login
                }, JsonRequestBehavior.AllowGet);
            }
            else
            {
                return Json(new AuthResult()
                {
                    Successe = false,
                    ResMsg = "Пользователь не найден или заблокирован",
                    Token = ""
                }, JsonRequestBehavior.AllowGet);
            }
        }
        [HttpPost]
        public JsonResult UserInfo()
        {
            if (CurrentUser != null)
            {
                return Json(new AuthResult()
                {
                    Successe = true,
                    Token = CurrentUser.ID.ToString(),
                    UserName = CurrentUser.Login
                }, JsonRequestBehavior.AllowGet);
            }
            else
            {
                return Json(new AuthResult()
                {
                    Successe = false,
                    ResMsg = "Пользователь не найден или заблокирован",
                    Token = ""
                }, JsonRequestBehavior.AllowGet);
            }
        }
        [HttpPost]
        public JsonResult CreateUser(string Login, string Password)
        {
            UOW.Repo_User.Create(new User()
            {
                Login = Login,
                Password = Password,
                IsActive = true,
                Groups = new List<Group>()
                {
                    UOW.Repo_Group.GetDefaultGroup(EnumDefaultGroups.Пользователи)
                }
            });
            return Json(true, JsonRequestBehavior.AllowGet);
        }
        [HttpPost]
        public JsonResult UserList()
        {
            UserListMode json;
            if (CurrentUser.IsAdmin)
            {
                var data = UOW.Repo_User.All_NoTrack_List;
                data.ForEach(e => e.Password = "");
                json = new UserListMode(true)
                {
                    Users = data
                };
                
            }
            else
            {
                json = new UserListMode(false)
                {
                    PermissionError = true,
                    ResMessage = "Need admin"                    
                };
            }
            return Json(json);
        }
        [HttpPost]
        public JsonResult UserList(List<User> users)
        {
            return Json(true);
        }
        public class UserListMode : BaseApiResult
        {
            public UserListMode(bool Successe) : base(Successe, "", "UserList") { }
            public List<User> Users;
        }
    }
}