예제 #1
0
        public IActionResult SignIn([FromBody] UserViewModel vmdl)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            vmdl.Uid = vmdl.Uid.ToLower();
            if (!LDAPAuthenticator.Authenticate(vmdl.Uid, vmdl.Password).IsAuthenticated)
            {
                _log.LogWarning("Failed login attempt for '{0}'", vmdl.Uid);
                return(Unauthorized());
            }
            Person p;

            if (_bl.GetUsers(vmdl.Uid) != null)
            {
                p = _bl.GetUsers(vmdl.Uid);
                _bl.UpdateUser(p);
            }
            else
            {
                p = _bl.CreateUser();
            }
            // Load user data from LDAP and save them into DB
            var ldapUser = LDAPAuthenticator.Authenticate(vmdl.Uid, vmdl.Password);

            vmdl.Refresh(ldapUser);
            vmdl.ApplyChanges(p, _bl);
            _bl.SaveChanges();

            // Create new token from user
            var token = _bl.CreateToken(p);

            return(Ok(new { token = new JwtSecurityTokenHandler().WriteToken(token) }));
        }
예제 #2
0
        public IHttpActionResult Login(UserViewModel vmdl)
        {
            var ldapUser = LDAPAuthenticator.Authenticate(vmdl.UID, vmdl.Password);

            if (ldapUser.IsAuthenticated)
            {
                vmdl.Roles    = new[] { ldapUser.PersonalType };
                vmdl.Name     = ldapUser.Fullname;
                vmdl.Password = null; // don't send password back to client
                vmdl.Jwt      = _bl.CreateJwt(vmdl);

                if (_bl.GetUser(vmdl.UID, checkAccess: false) == null)
                {
                    _bl.CreateUser(vmdl.UID, ldapUser.Fullname);
                    _bl.SaveChanges();
                }

                return(Ok(vmdl));
            }
            else
            {
                return(Unauthorized());
            }
        }