Ejemplo n.º 1
0
        /// <summary>
        /// RemoveRoleFromUserAsync
        /// </summary>
        /// <param name="userId"></param>
        /// <param name="roleId"></param>
        /// <param name="lastUser"></param>
        /// <returns></returns>
        /// <exception cref="IdentityException"></exception>
        /// <exception cref="DatabaseException"></exception>
        public async Task RemoveRoleFromUserAsync(long userId, long roleId, string lastUser)
        {
            ThrowIf.NotLongId(userId, nameof(userId));
            ThrowIf.NotLongId(roleId, nameof(roleId));

            TransactionContext trans = await _transaction.BeginTransactionAsync <RoleOfUser>().ConfigureAwait(false);

            try
            {
                //查重
                RoleOfUser?stored = await _roleOfUserRepo.GetByUserIdAndRoleIdAsync(userId, roleId, trans).ConfigureAwait(false);

                if (stored == null)
                {
                    throw Exceptions.NotFound(userId: userId, roleId: roleId, cause: "没有找到这样的角色");
                }

                await _roleOfUserRepo.DeleteAsync(stored, lastUser, trans).ConfigureAwait(false);

                await trans.CommitAsync().ConfigureAwait(false);
            }
            catch
            {
                await trans.RollbackAsync().ConfigureAwait(false);

                throw;
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// AddRolesToUserAsync
        /// </summary>
        /// <param name="userId"></param>
        /// <param name="roleId"></param>
        /// <param name="lastUser"></param>
        /// <returns></returns>
        /// <exception cref="IdentityException"></exception>
        /// <exception cref="DatabaseException"></exception>
        public async Task AddRolesToUserAsync(long userId, long roleId, string lastUser)
        {
            ThrowIf.NotLongId(userId, nameof(userId));
            ThrowIf.NotLongId(roleId, nameof(roleId));

            TransactionContext trans = await _transaction.BeginTransactionAsync <RoleOfUser>().ConfigureAwait(false);

            try
            {
                //查重
                long count = await _roleOfUserRepo.CountByUserIdAndRoleIdAsync(userId, roleId, trans).ConfigureAwait(false);

                if (count != 0)
                {
                    throw Exceptions.FoundTooMuch(userId: userId, roleId: roleId, cause: "已经有相同的角色");
                }

                RoleOfUser ru = new RoleOfUser(userId, roleId);

                await _roleOfUserRepo.UpdateAsync(ru, lastUser, trans).ConfigureAwait(false);

                await trans.CommitAsync().ConfigureAwait(false);
            }
            catch
            {
                await trans.RollbackAsync().ConfigureAwait(false);

                throw;
            }
        }
Ejemplo n.º 3
0
        /// <summary>
        /// SignOutAsync
        /// </summary>
        /// <param name="signInTokenId"></param>
        /// <param name="lastUser"></param>
        /// <returns></returns>
        /// <exception cref="DatabaseException"></exception>
        public async Task SignOutAsync(long signInTokenId, string lastUser)
        {
            ThrowIf.NotLongId(signInTokenId, nameof(signInTokenId));

            TransactionContext transContext = await _transaction.BeginTransactionAsync <SignInToken>().ConfigureAwait(false);

            try
            {
                SignInToken?signInToken = await _signInTokenRepo.GetByIdAsync(signInTokenId, transContext).ConfigureAwait(false);

                if (signInToken != null)
                {
                    await _signInTokenRepo.DeleteAsync(signInToken, lastUser, transContext).ConfigureAwait(false);
                }
                else
                {
                    _logger.LogWarning("尝试删除不存在的SignInToken. {SignInTokenId}", signInTokenId);
                }

                await transContext.CommitAsync().ConfigureAwait(false);
            }
            catch
            {
                await transContext.RollbackAsync().ConfigureAwait(false);

                throw;
            }
        }
Ejemplo n.º 4
0
        /// <summary>
        /// SignOutAsync
        /// </summary>
        /// <param name="userId"></param>
        /// <param name="idiom"></param>
        /// <param name="logOffType"></param>
        /// <param name="lastUser"></param>
        /// <returns></returns>
        /// <exception cref="DatabaseException"></exception>
        public async Task SignOutAsync(long userId, DeviceIdiom idiom, LogOffType logOffType, string lastUser)
        {
            ThrowIf.NotLongId(userId, nameof(userId));

            TransactionContext transactionContext = await _transaction.BeginTransactionAsync <SignInToken>().ConfigureAwait(false);

            try
            {
                await DeleteSignInTokensAsync(userId, idiom, logOffType, lastUser, transactionContext).ConfigureAwait(false);

                await _transaction.CommitAsync(transactionContext).ConfigureAwait(false);
            }
            catch
            {
                await _transaction.RollbackAsync(transactionContext).ConfigureAwait(false);

                throw;
            }
        }