Example #1
0
        private async Task <PortalTokenResp> LoginFinallyExecute(UserInfoBigMo user,
                                                                 PortalAuthorizeType authType, bool isFromThirdBind = false, SocialPlatform plat = SocialPlatform.None)
        {
            Resp <UserIdentity> identityRes;

            switch (authType)
            {
            case PortalAuthorizeType.Admin:     //  登录时默认只有admin,不会出现 superAdmin

                var adminRes = await AdminInfoRep.Instance.GetAdminByUId(user.id);

                if (!adminRes.IsSuccess())
                {
                    return new PortalTokenResp()
                           {
                               ret = adminRes.ret, msg = "管理员账号/密码错误!"
                           }
                }
                ;

                identityRes = InitialAdminIdentity(adminRes.data, plat);
                break;

            case PortalAuthorizeType.User:
                identityRes = InitialUserIdentity(user, plat);
                break;

            default:
                return(new PortalTokenResp(RespTypes.ParaError, "账号/密码错误!"));
            }

            if (!identityRes.IsSuccess())
            {
                return(new PortalTokenResp().WithResp(identityRes));
            }

            if (isFromThirdBind)
            {
                var bindRes = await BindTempOauthUserToUser(user.id);

                if (!bindRes.IsSuccess())
                {
                    return(new PortalTokenResp().WithResp(bindRes));
                }

                plat = bindRes.data;
            }

            PortalEvents.TriggerLoginEvent(identityRes.data, CoreAppContext.Identity);
            return(GeneratePortalToken(identityRes.data, plat));
        }
        /// <summary>
        ///  根据第三方信息处理登录或注册
        ///     (如果未绑定过系统账号,根据配置处理是否默认注册绑定
        /// </summary>
        /// <param name="plat"></param>
        /// <param name="code"></param>
        /// <param name="state"></param>
        /// <param name="authType"></param>
        /// <returns></returns>
        private async Task <PortalTokenResp> OauthRegLogin(SocialPlatform plat, string code, string state, PortalAuthorizeType authType)
        {
            // 先获取第三方账号最新信息,更新至本地
            var oauthUserRes = await AddOrUpdateOauthUser(plat, code, state);

            if (!oauthUserRes.IsSuccess())
            {
                return(new PortalTokenResp().WithResp(oauthUserRes)); // oauthUserRes.ConvertToResultInherit<PortalTokenResp>();
            }
            // 【已绑定过的用户】   执行登录
            var oauthUser = oauthUserRes.data;

            if (oauthUser.owner_uid > 0)
            {
                //  尝试直接登录
                var userRes = await UserInfoRep.Instance.GetById(oauthUser.owner_uid);

                return(!userRes.IsSuccess()
                    ? new PortalTokenResp().WithResp(userRes)
                    : await LoginFinallyExecute(userRes.data, authType, false, plat));
            }

            //  管理员只能通过第三方绑定信息登录,如果没有,登录失败
            if (authType == PortalAuthorizeType.Admin)
            {
                return new PortalTokenResp()
                       {
                           ret = (int)RespTypes.ParaError, msg = "非管理员账号,登录失败!"
                       }
            }
            ;

            // 【已绑定过的用户】  根据系统配置,检查是否默认绑定注册
            var regConfig = GetOauthRegConfig();

            if (regConfig.OauthRegisterType == OauthRegisterType.JustRegister)
            {
                return(await OauthReg(oauthUser));
            }

            // 执行第三方临时授权,返回临时授权后通知前端,执行绑定相关操作
            oauthUser.status = regConfig.OauthRegisterType == OauthRegisterType.Bind
                ? UserStatus.WaitOauthBind
                : UserStatus.WaitOauthChooseBind;

            var ide = InitialOauthTempIdentity(oauthUser, plat);

            PortalEvents.TriggerOauthTempLoginEvent(ide.data, AppReqContext.Identity, plat);
            return(GeneratePortalToken(ide.data, plat));
        }
Example #3
0
        private async Task <PortalTokenResp> RegFinallyExecute(UserInfoBigMo user, PortalAuthorizeType authType,
                                                               bool isFromBind = false, SocialPlatform plat = SocialPlatform.None)
        {
            var idRes = await UserInfoRep.Instance.Add(user);

            if (!idRes.IsSuccess())
            {
                return(new PortalTokenResp().WithResp(idRes));
            }

            if (isFromBind)
            {
                var bindRes = await BindTempOauthUserToUser(user.id);

                if (!bindRes.IsSuccess())
                {
                    return(new PortalTokenResp().WithResp(bindRes)); //bindRes;
                }
                plat = bindRes.data;
            }

            user.pass_word = null;
            var identity = new UserIdentity()
            {
                auth_type = authType,

                id     = user.id.ToString(),
                name   = user.nick_name,
                avatar = user.avatar
            };

            PortalEvents.TriggerRegisterEvent(identity, plat, CoreAppContext.Identity);
            return(GeneratePortalToken(identity, plat));

            ;
        }
Example #4
0
        public JsonResult AddEvents(EventsViewModel eventsViewModel)
        {
            eventsViewModel.EventStartDate = eventsViewModel.EventStartDate.AddDays(1);
            eventsViewModel.EventEndDate   = eventsViewModel.EventEndDate.AddDays(1);
            var token = _tokenValidator.Validate(HttpContext);

            if (!token.Success)
            {
                return(Json(new ReturnData <string>
                {
                    Success = false,
                    NotAuthenticated = true,
                    Message = $"Unauthorized:-{token.Message}",
                }));
            }

            if (token.Role == Role.Student || token.Role == Role.Applicant)
            {
                return(Json(new ReturnData <string>
                {
                    Success = false,
                    NotAuthenticated = true,
                    Message = "Sorry, you are not authorized to access this page",
                }));
            }

            var typeId = eventsViewModel.portalEventsTypeId ?? 0;

            eventsViewModel.DateCreated = DateTime.UtcNow;
            if (typeId == 0)
            {
                return(Json(new ReturnData <string>
                {
                    Success = false,
                    Message = "Please select event category"
                }));
            }

            try
            {
                var events = new PortalEvents
                {
                    EventTitle        = eventsViewModel?.EventTitle ?? "",
                    EventDesc         = eventsViewModel?.EventDesc ?? "",
                    CreatedBy         = eventsViewModel.CreatedBy,
                    DateCreated       = eventsViewModel.DateCreated,
                    EventStartDate    = eventsViewModel.EventStartDate,
                    EventEndDate      = eventsViewModel.EventEndDate,
                    SendEmailFlag     = eventsViewModel.SendEmailFlag,
                    TargetAudience    = eventsViewModel.TargetAudience,
                    PortalEventTypeId = eventsViewModel.portalEventsTypeId,
                    EventVenue        = eventsViewModel?.EventVenue ?? "",
                    TargetGroups      = eventsViewModel?.TargetGroups ?? "",
                    Campus            = eventsViewModel?.Campus ?? "",
                    Department        = eventsViewModel?.Department ?? "",
                    School            = eventsViewModel?.School ?? "",
                    YearOfStudy       = eventsViewModel?.YearOfStudy ?? ""
                };

                if (eventsViewModel.Id.HasValue && eventsViewModel.Id.Value > 0)
                {
                    events.Id = events.Id;
                    _context.PortalEvents.Update(events);
                }
                else
                {
                    _context.PortalEvents.Add(events);
                }

                if (eventsViewModel.SendEmailFlag)
                {
                    var users = _context.Users.Where(u => u.UserGroupsId == eventsViewModel.TargetAudience).ToList();
                    foreach (var user in users)
                    {
                        var emailContent = new MailsViewModel
                        {
                            UserCode   = user?.UserName ?? "",
                            Firstname  = "",
                            Code       = eventsViewModel?.EventDesc ?? "",
                            Email      = user.Email,
                            MailMethod = MailSendMethod.EventPosting,
                            PortalUrl  = eventsViewModel?.PortalUrl ?? "",
                            Subject    = eventsViewModel?.EventTitle ?? ""
                        };

                        emailSender.SendEmail(emailContent);
                    }
                }

                _context.SaveChanges();

                return(Json(new ReturnData <string>
                {
                    Success = true,
                    Message = "Successful"
                }));
            }
            catch (Exception ex)
            {
                return(Json(new ReturnData <string>
                {
                    Success = false,
                    Message = "An error occurred,please retry : " + ex.Message
                }));
            }
        }