protected JsonResult BuildResponseJsonResult(SMGenericResponse res, int code = 0) { return(new JsonResult(res) { StatusCode = code != 0 ? code : res.CheckStatus() }); }
protected ObjectResult BuildResponseObjectResult(SMGenericResponse res, int code = 0) { return(StatusCode(code != 0 ? code : res.CheckStatus(), res)); }
public ObjectResult Login([FromBody] SMUserCredentials data) { SMGenericResponse response = new SMGenericResponse() { Status = "Success", Message = "Credentials Correct" }; try { SMUserCredentials credentials = data.CleanData(); MCredentialsCheckResultClass result = CheckCredentials(credentials); switch (CastToEnum <HttpStatusCode>(result.Result)) { case HttpStatusCode.BadRequest: { response.Status = "Error"; response.Message = result.Message; response.Data = null; return(BuildResponseObjectResult(response, (int)HttpStatusCode.BadRequest)); } case HttpStatusCode.InternalServerError: { response.Status = "Error"; response.Message = result.Message; response.Data = null; return(BuildResponseObjectResult(response, (int)HttpStatusCode.InternalServerError)); } case HttpStatusCode.Unauthorized: { response.Status = "Error"; response.Message = result.Message; response.Data = null; return(BuildResponseObjectResult(response, (int)HttpStatusCode.Unauthorized)); } case HttpStatusCode.Accepted: { response.Status = "Success"; response.Message = "The user has valid access"; result = SearchUserInfoLDAP(credentials); if (result.Result == null) { response.Status = "Error"; response.Message = result.Message; response.Data = null; return(BuildResponseObjectResult(response, (int)HttpStatusCode.InternalServerError)); } List <string> roles = (List <string>)result.Result; if (roles.Count <= 0) { response.Status = "Error"; response.Message = "The user has no valid access roles to this application"; response.Data = null; return(BuildResponseObjectResult(response, (int)HttpStatusCode.Unauthorized)); } RosterMeta4 rosterMeta4 = dBContext.RosterMeta4.Include(i => i.User).First(f => f.NetworkLogin == credentials.Username); if (!rosterMeta4.Status) { response.Status = "Error"; response.Message = "The user has no access permission due inactivity"; response.Data = null; return(BuildResponseObjectResult(response, (int)HttpStatusCode.Forbidden)); } MUserTokenClaimsClass userTokenClaims = null; try { if (rosterMeta4.User == null) { rosterMeta4.User = new Users() { EmployeeNumber = rosterMeta4.EmployeeNumber, DateFirstLogin = DateTime.Now, DateLastLogin = DateTime.Now }; } else { rosterMeta4.User.DateLastLogin = DateTime.Now; } dBContext.SaveChanges(); roles.AddRange(GetExtraRoles(rosterMeta4)); userTokenClaims = new MUserTokenClaimsClass() { FullName = rosterMeta4.FullName, NetworkLogin = rosterMeta4.NetworkLogin, UserID = rosterMeta4.User.ID, EmployeeNumber = rosterMeta4.EmployeeNumber, EmployeeNumberSup = rosterMeta4.EmployeeNumberSup, ClientIP = Request.HttpContext.Connection.RemoteIpAddress.ToString(), Roles = roles.Distinct().ToList(), TokenV = 1.0 }; } catch (Exception) { response.Status = "Error"; response.Message = "Error fetching App/User extra info from requests"; response.Data = null; return(BuildResponseObjectResult(response, (int)HttpStatusCode.InternalServerError)); } response.Data = GetJWTToken(userTokenClaims); } break; default: { response.Status = "Error"; response.Message = "Internal server error authenticating with Active Directory (Unknow)"; response.Data = null; return(BuildResponseObjectResult(response, (int)HttpStatusCode.InternalServerError)); } } } catch (Exception e) { response.SetErrorInfo(e); } return(BuildResponseObjectResult(response)); }