func (srv *CompanyPersonService) ServiceGetAuthPerson(ctx context.Context, companyPerson models.CompanyPerson) (result map[string]interface{}) { session, _ := utils.ContextGetSession(ctx) result = srv.getAuthPersonsList(ctx, session, companyPerson) logger.WorkLogger.Debug("ServiceGetAuthPerson", zap.Any("companyPerson", companyPerson)) result["signAllow"] = companyPerson.IsSignAllow == consts.True //srv.compPersonAuth.FindSignAllowOfCompanyPerson(srv.db, companyPerson.ID) result["privileges"] = strings.Split(session.Permissions, ",") result["personType"] = "LegalEntity" // todo: personType.LegalEntity not implemented return } func (srv *CompanyPersonService) getAuthPersonsList(ctx context.Context, session models.Session, companyPerson models.CompanyPerson) (result map[string]interface{}) { result = make(map[string]interface{}) dList := make([]models.CompanyPerson, 0) if list, err := srv.FindAllCompanyPersonByUserAccount(companyPerson.UserAccountID); err == nil { logger.WorkLogger.Debug("getAuthPersonsList", zap.Any("list", list)) if utils.IsFactorPassed(ctx, consts.AuthFactorTypeSignature) { logger.WorkLogger.Debug("getAuthPersonsList 2", zap.Any("list", list)) sessionFactor := utils.GetPassedFactor(ctx, consts.AuthFactorTypeSignature) certificateSerialNumber := sessionFactor.FactorSn if acpList, err := srv.certificate.FindAllBySN(srv.db, certificateSerialNumber); err == nil { authenticatedCompanyPersons := make([]map[string]interface{}, 0) for _, acp := range acpList { authenticatedCompanyPersons = append(authenticatedCompanyPersons, acp.ConvertToDTO()) } if len(authenticatedCompanyPersons) == 0 { list = []models.CompanyPerson{} } else { for _, authCPerson := range authenticatedCompanyPersons { for _, cPerson := range list { if cPerson.ID == authCPerson["id"] { dList = append(dList, cPerson) } } } } } else { logger.WorkLogger.Debug("FindAllBySN", zap.Error(err)) } } else { logger.WorkLogger.Debug("IsFactorPassed", zap.Error(err)) } } else { logger.WorkLogger.Debug("getAuthPersonsList", zap.Error(err)) } intlPersons := make([]interface{}, 0) personList := make([]interface{}, 0) if len(dList) != 0 { for _, person := range dList { personList = append(personList, person) } result["persons"] = personList for _, person := range dList { intlPersons = append(intlPersons, map[string]interface{}{ tools.Int64ToStr(person.ID): "", }) } result["intlPersons"] = intlPersons } result["currentAuthPerson"] = companyPerson.ID result["currentAuthBIN"] = nil result["quickLinks"] = companyPerson.QuickLinks allFactors := make([]string, 0) factors := srv.loginChain.GetAllFactorsName(srv.db) for _, sessionFactor := range session.Factors { if sessionFactor.SessionFactorType == consts.AuthFactorTypeSignature && sessionFactor.AuthPersonID.Int64 == companyPerson.ID || sessionFactor.SessionFactorType != consts.AuthFactorTypeSignature { for _, f := range factors { if f != string(sessionFactor.SessionFactorType) { allFactors = append(allFactors, f) } } } } result["addfactors"] = allFactors return }